Вопрос № 44769: Здравствуйте, уважаемые эксперты!
Вопрос немного странный...
Пусть есть некий кусок кода. Почему в программе он выдает одно, а если его запустить отдельно - другое? См. приложение.
В программе со значением ничего не делается, просто оно...
Вопрос № 44.769
Здравствуйте, уважаемые эксперты!
Вопрос немного странный...
Пусть есть некий кусок кода. Почему в программе он выдает одно, а если его запустить отдельно - другое? См. приложение.
В программе со значением ничего не делается, просто оно присваивается от одной переменной к другой. Да и после первого вывода видно, что 0 еще сохраняется. Почему после операции "++", когда ноль должен остаться, он исчезает?
Спасибо!
Все дело в "волшебном" поведении операции инкремента...
Операция увеличения ++, примененная к переменной, содержащей строки определенного вида, выполняется несколько необычно:
Если строка состоит только из латинских букв, то возвращаемым значением операции инкремента будет строка, в которой последняя буква заменена на следующую по порядку алфавита, причем строчная заменяется на строчную, заглавная на заглавную. Аналогично операция ведет себя, если строка состоит из цифр - последняя цифра увеличивается на единицу. Если в "последнем разряде" стоит '9', 'z', 'Z' - то есть крайнее значение последовательности цифрбукв, то оно сбрасывается в начальное ('0', 'a', 'A') и производится
инкремент предпоследнего разряда и т.д.
Пример:
$str = 'abc';
$str++; - результат $str = 'abd';
$str = '05';
$str++; - результат $str = '06';
$str = 'a99';
$str++; - результат $str = 'b00';
Операция декремента (--) таким свойством не обладает!
У вас же во втором случае инициализация идет строковым представлением числа ($MonthCurStart='05'). Соответственно операция инкремента себя ведет как описано выше (отсюда ноль не убирается).
А в первом случае видимо скаляр $MonthCurStop в результате каких либо манипуляций теряет строковый контекст - поэтому инкремент уже применяется к числу (ведущий ноль теряется).
Успехов;)
Ответ отправил: Лучников Ю.В. (статус: *Мастер-Эксперт) Россия, Киров WWW:нЧат - Наш Чат! ICQ: 176308580 ---- Ответ отправлен: 31.05.2006, 16:57 Оценка за ответ: 4