you should to add example without whitespaces:
$foo = 4 + "10.2LittlePiggies";
Un string PHP se considera numérico si puede ser interpretado como un int o un float.
Formalmente a partir de PHP 8.0.0:
WHITESPACES \s* LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM}) INT_NUM_STRING {WHITESPACES} [+-]? {LNUM} {WHITESPACES} FLOAT_NUM_STRING {WHITESPACES} [+-]? ({DNUM} | {EXPONENT_DNUM}) {WHITESPACES} NUM_STRING ({INT_NUM_STRING} | {FLOAT_NUM_STRING})
PHP también dispone de un concepto de strings iniciando numéricamente. Se trata simplemente de un string que comienza como un string numérico seguido de cualquier carácter.
Nota:
Cualquier string que contenga la letra
E
(insensible a mayúsculas y minúsculas) delimitada por números será considerada como un número expresado en notación científica. Esto puede producir resultados inesperados.<?php
var_dump("0D1" == "000"); // false, "0D1" no es notación científica
var_dump("0E1" == "000"); // true, "0E1" es 0 * (10 ^ 1), o 0
var_dump("2E1" == "020"); // true, "2E1" es 2 * (10 ^ 1), o 20
?>
Cuando una string debe ser evaluada como un número (por ejemplo, operaciones aritméticas, declaración de tipo int, etc.), se siguen los siguientes pasos para determinar el resultado:
PHP_INT_MAX
), de lo contrario se resuelve en un
float.
PHP_INT_MAX
), de lo contrario se resuelve en un
float.
Además, se genera un error de nivel E_WARNING
.
Antes de PHP 8.0.0, un string se consideraba numérico solo si tenía espacios en blanco al inicio del string, si tenía espacios en blanco al final del string, el string se consideraba como un string iniciando numéricamente.
Antes de PHP 8.0.0, cuando un string se utilizaba en un contexto numérico, seguía los mismos pasos que los anteriores, con las siguientes diferencias:
E_NOTICE
en lugar de E_WARNING
.
E_WARNING
y se devolvía el valor 0
.
E_NOTICE
ni E_WARNING
se generaban.
<?php
$foo = 1 + "10.5"; // $foo es float (11.5)
$foo = 1 + "-1.3e3"; // $foo es float (-1299)
$foo = 1 + "bob-1.3e3"; // TypeError a partir de PHP 8.0.0, $foo era integer (1) anteriormente
$foo = 1 + "bob3"; // TypeError a partir de PHP 8.0.0, $foo era integer (1) anteriormente
$foo = 1 + "10 Small Pigs"; // $foo es integer (11) y se genera un E_WARNING en PHP 8.0.0, E_NOTICE anteriormente
$foo = 4 + "10.2 Little Piggies"; // $foo es float (14.2) y se genera un E_WARNING en PHP 8.0.0, E_NOTICE anteriormente
$foo = "10.0 pigs " + 1; // $foo es float (11) y se genera un E_WARNING en PHP 8.0.0, E_NOTICE anteriormente
$foo = "10.0 pigs " + 1.0; // $foo es float (11) y se genera un E_WARNING en PHP 8.0.0, E_NOTICE anteriormente
?>
you should to add example without whitespaces:
$foo = 4 + "10.2LittlePiggies";