++
и --
приводят к одному и тому же конечному результату - увеличивая или уменьшая переменную - независимо от того, применяется ли она до или после имени переменной, разница возникает, когда она используется как часть более крупного оператора.* Рассмотрим это:
$a = 5;
$a--;
echo $a; // 4
$a = 5;
--$a;
echo $a; // 4
Итак, вы видите, они дают один и тот же конечный результат - $a
уменьшаются на единицу.Я уверен, что это то, что вы ожидали.
Однако:
$a = 5;
echo $a--; // 5
echo $a; // 4
$a = 5;
echo --$a; // 4
echo $a; // 4
В этом примере $a
все еще уменьшается после операции, но порядок, в котором происходит уменьшениеи значение используется другое.Для $a--
значение используется до уменьшения, а для --$a
значение используется после.
Так для вашего примера кода:
$a = 5; // Operations in order of occurence:
$c = $a-- // $c = 5; $a = 5 - 1 == 4;
+ $a-- // $c = 5 + 4 == 9; $a = 4 - 1 == 3;
+ --$a // $a = 3 - 1 == 2; $c = 9 + 2 == 11;
- --$a; // $a = 2 - 1 == 1; $c = 11 - 1 == 10;
echo $c; // 10