<?php
$b=10;
$f=$b + $b + --$b;
echo $f; //выведет 29, вроде правильно
$b=10;
$f=$b + --$b;
echo $f; //выведет 18, почему не 19 !?!?!?
//или еще вот так
$b=10;
$f=$b + $b + $b--;
echo $f; //выведет 30, ожидаемо, но, смотрим дальше
$b=10;
$f=$b + $b--;
echo $f; //выведет...пауза...затаили дыхание...барабанный бой...19!!!!
Буду очень признателен, если кто-нибудь сможет объяснить, почему так происходит. Версия PHP 7.1.6 (xampp v3.2.2)
Очень интересный приоритет операторов у этого вашего PHP. К тому же сложение выполняется по порядку, но слагаемые вычисляются наоборот справа налево в данном случае. Этот порядок не гарантируется, поэтому результат на других версиях PHP может отличаться. К примеру на версии 5.0.4 порядок тот же, но слагаемые вычисляются более привычно слева направо, см. UPD.
Уравнение первое $f=$b + $b + --$b;
Уравнение второе $f = $b + --$b;
Уравнение третье $f=$b + $b + $b--;
Уравнение четвертое $f=$b + $b--;
Но гораздо веселее складывать такое: $f=$b + $b + $b-- + $b + $b;
и $f=$b + $b + --$b + $b + $b;
P.S. Лучше избегайте таких конструкций, результат которых может быть неопределенным и никак не гарантируется разработчиками.
UPD.. На версии 5.0.4 порядок тот же, но слагаемые вычисляются более привычно слева направо. Поэтому в примерах выше сначала раскроются ссылки слева и потом будет вычислен инкремент справа.
Уравнение первое $f=$b + $b + --$b;
Уравнение второе $f = $b + --$b;
Уравнение третье $f=$b + $b + $b--;
Уравнение четвертое $f=$b + $b--;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как используя steam api проверить аккаунт на наличие csgo?
код получает только json объект 1 раз, по элементу нулевого массиваостальные 2 он не запрашивает вообще
Надо запретить доступ на просмотр нескольких файлов (их может быть тысячи)Например: header