Добавление или вычитание единицы является настолько часто встречающейся операцией, что РНР предоставляет для этого специальные операторы. Вместо операторов += и - = можно воспользоваться одним из следующих операторов:
++$х;
--$у;В сочетании с проверкой (инструкцией if) можно воспользоваться следующим кодом:
if (++$х == 10) echo $х;
Этот код предписывает РНР сначала увеличить значение переменной $х на единицу, а затем проверить, не имеет ли она значение 10; если переменная имеет такое значение, его следует вывести на экран. Но также можно потребовать от РНР увеличить значение переменной на единицу (или, как в следующем примере, уменьшить на единицу) после того, как ее значение будет проверено:
if ($у -= 0) echo $у;
Это дает несколько иной результат. Предположим, что первоначальное значение переменной $у до выполнения оператора было равно нулю. Операция сравнения вернет результат true, но, после того как она будет проведена, значение переменной $у будет установлено в -1. Тогда что же отобразит инструкция echo: 0 или -1? Попробуйте догадаться, а потом, чтобы подтвердить свою догадку, испытайте работу инструкции в PHP-процессоре. Поскольку такая комбинация операторов может вас запутать, ее можно применять только в качестве обучающего примера, но ни в коем случае не рассматривать в качестве приемлемого стиля программирования.
Итак, когда именно увеличено или уменьшено на единицу значение переменной — до или после проверки, зависит от того, где помещен оператор инкремента или декремента — перед именем переменной или после него.
Кстати, правильный ответ на предыдущий вопрос таков: инструкция echo отобразит результат -1, потому что значение переменной $у было уменьшено на единицу сразу же после того, как к ней получила доступ инструкция if, и до того, как к ней получила доступ инструкция echo.
| Присваивание значений переменным | Объединение строк |