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