Рассмотрим следующий код:
<?php
$num = 0;
$num = $num + 1; // прибавляем к переменной $num число 1
echo $num; // выведет 1
?>
Как вы уже знаете, этот код можно переписать
в сокращенном виде через оператор +=
:
<?php
$num = 0;
$num += 1; // прибавляем к переменной $num число 1
echo $num; // выведет 1
?>
На самом деле прибавление единицы в программировании
встречается так часто, что для этой операции
придуман еще более сокращенный синтаксис
- специальный оператор ++
(инкремент),
увеличивающий значение переменной на 1
.
Перепишем наш код с его помощью:
<?php
$num = 0;
$num++; // прибавляем к переменной a число 1
echo $num; // выведет 1
?>
Кроме операции ++
есть также операция
--
(декремент), уменьшающая
значение переменной на 1
. Смотрите пример:
<?php
$num = 0;
$num--; // отнимаем от переменной $num число 1
echo $num; // выведет -1
?>
Переделайте этот код так, чтобы в нем операции инкремента и декремента:
<?php
$num = 10;
$num = $num + 1;
$num = $num + 1;
$num = $num - 1;
echo $num;
?>
Префиксный и постфиксный тип
На самом деле операции инкремента и декремента
можно записывать двумя способами. В постфиксном
виде операция записывается после имени переменной,
вот так: $a++
, а в префиксном
виде - перед именем переменной, вот так:
++$a
. Давайте посмотрим на примерах,
в чем разница между двумя способами.
В следующем примере первый echo
выведет
0
, так как вначале сработает вывод
на экран, а уже затем переменная увеличится:
<?php
$num = 0;
echo $num++; // выведет 0, тк переменная увеличится только после echo
echo $num; // выведет 1 - переменная поменялась
?>
А теперь переменная вначале увеличится, а уже затем будет вывод на экран:
<?php
$num = 0;
echo ++$num; // выведет 1 - переменная увеличилась сразу
?>
Такое поведение справедливо не только для вывода на экран, но и для присваивания:
<?php
$num1 = 0;
$num2 = $num1++; // в переменную $num2 запишется 0
echo $num2; // выведет 0
echo $num1; // выведет 1 - переменная $num1 поменялась после записи в $num2
?>
А теперь поменяем постфиксную форму на префиксную:
<?php
$num1 = 0;
$num2 = ++$num1; // в переменную $num2 запишется 1
echo $num2; // выведет 1
?>
Если наша операция выполняется на отдельной строке, то разницы между префиксной и постфиксной формами нет:
<?php
$num = 0;
++$num;
$num++;
echo $num; // выведет 2
?>
Не запуская код, определите, что выведется на экран:
<?php
$num = 3;
echo ++$num;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num = 3;
echo $num++;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num = 3;
echo --$num;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num = 3;
echo $num--;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num1 = 3;
$num2 = ++$num1;
echo $num1;
echo $num2;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num1 = 3;
$num2 = $num1++;
echo $num1;
echo $num2;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num1 = 3;
$num2 = --$num1;
echo $num1;
echo $num2;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num1 = 3;
$num2 = $num1--;
echo $num1;
echo $num2;
?>
Не запуская код, определите, что выведется на экран:
<?php
$num1 = 3;
$num1++;
$num2 = $num1--;
echo $num1++;
echo --$num2;
?>