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.

Note:

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().

Note:

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.

Note:

Algumas operações númericas 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 de $x com funções PHP
Expression gettype() empty() is_null() isset() bool : if($x)
$x = ""; string true false true false
$x = null; NULL true true false false
var $x; NULL true true false false
$x is undefined NULL true true false false
$x = []; array true false true false
$x = ['a', 'b']; array false false true true
$x = false; bool true false true false
$x = true; bool false false true true
$x = 1; int false false true true
$x = 42; int false false true true
$x = 0; int true false true false
$x = -1; int false false true true
$x = "1"; string false false true true
$x = "0"; string true false true false
$x = "-1"; string false false true true
$x = "php"; string false false true true
$x = "true"; string false false true true
$x = "false"; string false false true true

Comparações aproximadas com ==
true false 1 0 -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 1 0 -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