Tabela de comparações de tipos do PHP
As seguintes tabelas demonstram o comportamento dos
tipos e
operadores
de comparação no PHP, tanto para comparações aproximadas ou exatas. Este
complemento é também relacionado com a seção do manual sobre
type juggling.
A inspiração vem dos comentários de vários usuários e do trabalho feito pela
BlueShoes.
Antes de utilizar essas tabelas, é importante entender os tipos e seus
significados. Por exemplo, "42" é uma string
enquanto 42 é um int. &false; é um
bool enquanto "false" é uma
string.
Formulários HTML não passam inteiros, floats ou booleanos; eles passam strings.
Para saber se uma string é do tipo númerico, você pode usar a função
is_numeric.
Usar apenas if ($x) quando $x estiver
indefinido irá gerar um erro do nível E_NOTICE.
Em vez disso, considere usar empty ou
isset ou ainda inicialize suas variáveis.
Algumas operações numéricas podem resultar em um valor representado pela constante
NAN. Quaisquer comparações exatas ou aproximadas deste valor
contra qualquer outro valor, incluindo ele mesmo, com exceção de &true;, terão como resultado &false;.
(por exemplo NAN != NAN e NAN !== NAN)
Exemplos de operações que geram NAN são
sqrt(-1), asin(2), e
acosh(0).
Comparações aproximadas com ==&true;&false;10-1"1""0""-1"&null;[]"php"""&true;&true;&false;&true;&false;&true;&true;&false;&true;&false;&false;&true;&false;&false;&false;&true;&false;&true;&false;&false;&true;&false;&true;&true;&false;&true;1&true;&false;&true;&false;&false;&true;&false;&false;&false;&false;&false;&false;0&false;&true;&false;&true;&false;&false;&true;&false;&true;&false;&false;*&false;*-1&true;&false;&false;&false;&true;&false;&false;&true;&false;&false;&false;&false;"1"&true;&false;&true;&false;&false;&true;&false;&false;&false;&false;&false;&false;"0"&false;&true;&false;&true;&false;&false;&true;&false;&false;&false;&false;&false;"-1"&true;&false;&false;&false;&true;&false;&false;&true;&false;&false;&false;&false;&null;&false;&true;&false;&true;&false;&false;&false;&false;&true;&true;&false;&true;[]&false;&true;&false;&false;&false;&false;&false;&false;&true;&true;&false;&false;"php"&true;&false;&false;&false;*&false;&false;&false;&false;&false;&false;&true;&false;""&false;&true;&false;&false;*&false;&false;&false;&false;&true;&false;&false;&true;
* &true; anteriormente ao PHP 8.0.0.
Comparações exatas com ===&true;&false;10-1"1""0""-1"&null;[]"php"""&true;&true;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&true;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;1&false;&false;&true;&false;&false;&false;&false;&false;&false;&false;&false;&false;0&false;&false;&false;&true;&false;&false;&false;&false;&false;&false;&false;&false;-1&false;&false;&false;&false;&true;&false;&false;&false;&false;&false;&false;&false;"1"&false;&false;&false;&false;&false;&true;&false;&false;&false;&false;&false;&false;"0"&false;&false;&false;&false;&false;&false;&true;&false;&false;&false;&false;&false;"-1"&false;&false;&false;&false;&false;&false;&false;&true;&false;&false;&false;&false;&null;&false;&false;&false;&false;&false;&false;&false;&false;&true;&false;&false;&false;[]&false;&false;&false;&false;&false;&false;&false;&false;&false;&true;&false;&false;"php"&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&true;&false;""&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&false;&true;