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