На этом шаге мы рассмотрим особенности операций инкремента и декремента.
Операции увеличения (++) и уменьшения (-) аналогичны таким же операциям в языке C. Результат этих операций зависит от того, стоят ли они перед (префиксная форма) или после переменной (постфиксная форма). При использовании префиксной формы они, соответственно, увеличивают или уменьшают числовое значение переменной на единицу до возвращения значения. Постфиксная форма этих операций изменяет числовое значение переменной после возвращения ими значения. Действие этих операций на числовые переменные иллюстрируется следующим примером (операторы фрагмента программы выполняются последовательно).
$n = 10.7; # Начальное значение Sinf1 = -$n; # Результат: $inf1 = 9.7 и $n = 9.7 $inf2 = ++$n; # Результат: $inf2 = 10.7 и $n = 10.7 $post1 = $n--; # Результат: $post1 = 10.7 но $n = 9.7 $post2 = $n++; # Результат: $post2 = 9.7 но $n = 10.7
Операция увеличения (префиксная и постфиксная), примененная к переменной, содержащей строку определенного вида, выполняется несколько необычно. Если строка состоит только из латинских букв, то возвращаемым значением операции увеличении будет строка, в которой последняя буква заменена на следующую по порядку букву алфавита, причем строчная заменяется строчной, а прописная прописной. Если строка завершается идущими подряд буквами "z" или "Z", то все они заменяются соответственно на "а" или "А", а стоящая перед ними в строке буква заменяется на следующую букву алфавита. Если вся строка состоит из букв "z" и "Z", то кроме замены этих букв в соответствии с предыдущим правилом, перед ними добавляется строчная или прописная буква "а" в зависимости от того, строчная или прописная буква "z" стояла первой в строке.
Аналогичные действия осуществляются, если строка завершается последовательностью цифр: последняя цифра увеличивается на единицу. Если строка завершается идущими подряд цифрами 9, то все они заменяются на 0, а примыкающий к ним символ "увеличивается" на единицу: для буквы он переходит в следующий по алфавиту, а для цифры в следующую по порядку цифру. Если последовательность целиком состоит из девяток, то все они заменяются на нули, перед которыми добавляется единица. Префиксная и постфиксная формы операции действуют как обычно. Несколько иллюстраций этих операций представлены в следующем примере.
$s = "abc" $s1 = ++$s; # Результат: $sl = "abd" 5s = "abC"; $s1 = ++$s; # Результат: $sl = "abD" $s = "abz"; $s1 = ++$s; # Результат: $sl = "аса" $s = "abzZz"; $s1 = ++$s; # Результат: $sl = "acaAa" $s = "ab09"; $s1 = ++$s; # Результат: $sl = "ab10" $s = "99"; $s1 = ++$s; # Результат: $sl = "100"
На следующем шаге мы рассмотрим операции конкатенации и повторения.