echo 1/3;
Я ожидал, что выше будет выводить 0, но на самом деле PHP достаточно умен, чтобы вывести 0.33333333333333
0
0.33333333333333
С каких пор PHP начинает вести себя так?
Он всегда так себя вел.См .: http://php.net/manual/en/language.operators.arithmetic.php
Оператор деления ("/") возвращает значение с плавающей запятой, если только два операнда не являются целыми числами (или строками, которые преобразуются в целые числа), а числа делятся равномерно, в которыхслучай, когда будет возвращено целое значение.
PHP не является строго типизированным языком.Он все время так делает.
Насколько я знаю, php изначально разрабатывался таким образом.
Я бы сказал, что это ожидаемое поведение.
Если вы хотите получить целое число, используйте приведение:
echo (int)(1/3);