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

PHP, аналогично C, поддерживает префиксные и постфиксные операторы инкремента и декремента.

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

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

Приведем пример простого скрипта:

<?php
echo "<h3>Постфиксный инкремент</h3>";
$a = 5;
echo
"Должно быть 5: " . $a++ . "<br />\n";
echo
"Должно быть 6: " . $a . "<br />\n";

echo
"<h3>Префиксный инкремент</h3>";
$a = 5;
echo
"Должно быть 6: " . ++$a . "<br />\n";
echo
"Должно быть 6: " . $a . "<br />\n";

echo
"<h3>Постфиксный декремент</h3>";
$a = 5;
echo
"Должно быть 5: " . $a-- . "<br />\n";
echo
"Должно быть 4: " . $a . "<br />\n";

echo
"<h3>Префиксный декремент</h3>";
$a = 5;
echo
"Должно быть 4: " . --$a . "<br />\n";
echo
"Должно быть 4: " . $a . "<br />\n";
?>

PHP следует соглашениям Perl (в отличие от С) касательно выполнения арифметических операций с символьными переменными. Например в Perl 'Z'+1 будет вычислено как 'AA', в то время как в C 'Z'+1 будет вычислено как '[' ( ord('Z') == 90, ord('[') == 91 ). Следует учесть, что к символьным переменным можно применять операцию инкремента, в то время как операцию декремента применять нельзя.

Пример 15-2. Арифметические операции с символьными переменными

<?php
$i
= 'W';
for(
$n=0; $n<6; $n++)
  echo ++
$i . "\n";

/*
  Результат работы будет следующий:

X
Y
Z
AA
AB
AC

*/
?>

Инкрементирование или декрементирование булевых переменных не приводит ни к какому результату.