Числовые строки
В PHP строка (string) считается числовой, если её можно интерпретировать как целое
(int) число или как число с плавающей точкой (float).
Формально с PHP 8.0.0:
В PHP также присутствует концепция префиксной числовой строки.
Это строка, которая начинается как числовая и продолжается любыми другими символами.
Любая строка, содержащая букву E (без учёта регистра),
ограниченную цифрами, будет восприниматься как число, выраженное в научной нотации.
Это может привести к неожиданным результатам.
]]>
Строки, используемые в числовых контекстах
Когда строку необходимо использовать в качестве числа (например арифметические операции, декларация
целочисленного типа, и т. д.), используется следующий алгоритм действий:
Если строка числовая, представляет целое число и не превышает максимально
допустимого значения для типа int (определённого в
PHP_INT_MAX), то она приводится к типу int.
Иначе она приводится к типу float.
Если в заданном контексте дозволительно использовать префиксную числовую строку, то,
если начало строки представляет целое число и не превышает максимально
допустимого значения для типа int (определённого в
PHP_INT_MAX), то она приводится к типу int.
Иначе она приводится к типу float.
Также, в этом случае, выдаётся ошибка уровня E_WARNING.
Если строка не числовая - выбрасывается исключение
TypeError.
Поведение до PHP 8.0.0
До PHP 8.0.0 строка считалась числовой только в случае, если она
начиналась с пробельных символов. Если она
завершалась пробельными символами —
она считалась префиксной числовой.
До PHP 8.0.0, когда строку необходимо использовать как число, использовался тот же алгоритм,
что и описан выше, но с некоторыми отличиями:
Использование префиксной числовой строки вызывало ошибку уровня
E_NOTICE, а не E_WARNING.
Если строка не являлась числовой, вызывалась ошибка уровня E_WARNING,
а сама строка приводилась к числу 0.
До PHP 7.1.0 не вызывалась ошибка уровня ни E_NOTICE,
ни E_WARNING.
]]>