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.
Nota:
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().
Nota:
Usar apenas
if ($x)
quando $x estiver indefinido irá gerar um erro do nívelE_NOTICE
. Em vez disso, considere usar empty() ou isset() ou ainda inicialize suas variáveis.
Nota:
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 detrue
, terão como resultadofalse
. (por exemploNAN != NAN
eNAN !== NAN
) Exemplos de operações que geramNAN
sãosqrt(-1)
,asin(2)
, eacosh(0)
.
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 |
true
anteriormente ao PHP 8.0.0.