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

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

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

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

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

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

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

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

PHP Результат BwCodes
<?php

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

//Выведет 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
echo $a.'<br>'; 	

?>

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

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

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

Быстрый переход к другим страницам