Ваш код и пример кода не совпадают. Это чудо, что они ведут себя по-разному?
Чтобы увидеть ожидаемое поведение, вы должны изменить $var++
на ++$var
.
Что здесь происходит, так это то, что, хотя значение $a
равно 6 после возврата функции, возвращаемое значение равно 5 из-за того, как работает оператор постинкрементного увеличения ($var++
). Вы можете проверить это с помощью:
$a=5;
echo foo($a); // returns 5
echo $a; // but prints 6!