Strings numéricas
Uma string PHP é considerada numérica se puder ser interpretada
como int ou float.
Formalmente a partir do PHP 8.0.0:
O PHP também tem um conceito de strings numéricas principais.
Isso é simplesmente uma string que começa como uma string numérica seguida por
qualquer caractere.
Qualquer string que contenha a letra E (sem distinção entre maiúsculas e minúsculas)
delimitada por números será vista como um número expresso em notação científica.
Isso pode produzir resultados inesperados.
Comparações de notações científicas
]]>
Strings usadas em contextos numéricos
Quando uma string precisa ser avaliada como número (por exemplo, operações
aritméticas, declaração de tipo int, etc.), as seguintes etapas
são executadas para determinar o resultado:
Se a string for numérica, resolva para um int se
a string for uma string numérica inteira e se encaixar nos
limites do tipo int (conforme definido por
PHP_INT_MAX), caso contrário resolva para um
float.
Se o contexto permitir strings numéricas iniciais e a string
for uma, resolva para um int se a parte inicial da string for uma
string numérica inteira e se encaixar nos
limites do tipo int (conforme definido por
PHP_INT_MAX), caso contrário resolva para um
float.
Além disso, um erro de nível E_WARNING é gerado.
A string não é numérica, lance um
TypeError.
Comportamento antes do PHP 8.0.0
Antes do PHP 8.0.0, uma string era considerada numérica apenas se
tivesse espaços em branco à esquerda, se tivesse espaços em branco à
direita, a string era considerada
numérica à esquerda.
Antes do PHP 8.0.0, quando uma string era usada em um contexto numérico,
ela executava as mesmas etapas acima com as seguintes diferenças:
O uso de uma sequência numérica inicial geraria um
E_NOTICE em vez de um E_WARNING.
Se a string não for numérica, um E_WARNING foi
levantado e o valor 0 seria retornado.
Antes do PHP 7.1.0, nem E_NOTICE nem
E_WARNING eram gerados.
]]>