Операторы инкремента и декремента в PHP
http://belarusweb.net
Основы создания сайтов

Операторы инкремента и декремента

В PHP, как и в JavaScript, поддерживаются префиксные и постфиксные операторы инкремента и декремента.

Оператор инкремента/декремента служит для увеличения/уменьшения значения своего операнда на единицу и обозначается знаками '++'/'--'. Если оператор инкремента/декремента расположен перед операндом, то он называется префиксным оператором инкремента/декремента. В этом случае оператор инкремента/декремента сперва увеличивает/уменьшает значение операнда на единицу, и только затем измененное на единицу значение операнда возвращается для дальнейшего использования.

Если же оператор инкремента/декремента расположен после операнда, то он называется постфиксным оператором инкремента/декремента. В таком случае оператор инкремента/декремента сперва возвращает неизмененное (начальное) значение операнда, и только затем увеличивает/уменьшает значение операнда на единицу. Все операторы инкремента и декремента перечислены в таблице 3.4.

Пример Название Результат
++$a Префиксный инкремент Увеличивает $a на единицу, затем возвращает значение $a.
$a++ Постфиксный инкремент Возвращает значение $a, затем увеличивает $a на единицу.
--$a Префиксный декремент Уменьшает $a на единицу, затем возвращает значение $a.
$a-- Постфиксный декремент Возвращает значение $a, затем уменьшает $a на единицу.

Таблица 3.4. Операторы инкремента и декремента

Добавим, что операторы инкремента и декремента наиболее часто используются с переменными внутри циклов, особенно для увеличения/уменьшения показаний счетчиков цикла (подробнее об этом мы поговорим в соответствующем разделе, посвященному управляющим конструкциям). Пока же посмотрите несколько более простых примеров использования операторов инкремента и декремента (см. пример 3.5).

<?php
$a=5; 	  			//Присвоили число 5

echo ++$a.'<br>'; //Выведет 6, т.к. префиксный оператор инкремента увеличит значение 
						//переменной на 1, а затем вернет его для вывода; теперь $a==6 

echo $a++.'<br>'; //Выведет 6, т.к. постфиксный оператор инкремента вернет для вывода  
						//значение переменной, т.е. 6, а только потом увеличит его на 1 

echo $a.'<br>';   //Выведет 7, т.к. после предыдущего использования $a==7
			  
echo --$a.'<br>'; //Выведет 6, т.к. префиксный оператор декремента уменьшит значение 
						//переменной на 1, а затем вернет его для вывода; теперь $a==6 

echo $a--.'<br>'; //Выведет 6, т.к. постфиксный оператор декремента вернет сперва для   
						//вывода значение переменной, т.е. 6, а только потом увеличит его на 1 

echo $a.'<br>'; 	//Выведет 5, т.к. после предыдущего использования $a==5
?>

Пример 3.5. Использование операторов инкремента и декремента

Также нужно иметь в виду, что:

  • операторы инкремента и декремента влияют только на строки и числа;
  • --NULL не даст никакого эффекта, однако ++NULL вернет число 1;
  • инкрементирование или декрементирование булевых переменных, массивов, объектов и ресурсов не даст никакого результата.