Comparación de tipos en PHP
En esta página
Comparación de tipos en PHP#
La tabla siguiente resume los diferentes comportamientos de PHP con los tipos y operadores de comparación, estricta o amplia. Esta tabla también está relacionada con el transtipado. Fue inspirada por diferentes comentarios de usuarios, y por el trabajo realizado en BlueShoes.
Antes de utilizar estas tablas, es importante comprender los tipos y su significado. Por ejemplo, "42" es un string, mientras que 42 es un int. false es bool mientras que "false" es un string.
[!NOTE] Los formularios HTML no conocen los enteros, números de coma flotante y otros booleanos. Para saber si una estructura es un entero, utilice
is_numeric.[!NOTE] La línea
if ($x)genera un error de nivelE_NOTICEcuando$xestá indefinido. Alternativamente, utilice las funcionesemptyoisset, o inicialice todas sus variables.[!NOTE] Las operaciones numéricas pueden dar como resultado un valor representado por la constante
NAN. Todas las comparaciones de este valor con cualquier otro valor, incluyendo el mismo valor, exceptotruetendrán como resultadofalse(i.e.NAN != NANyNAN !== NAN). Ejemplos de operaciones que producen el valorNAN:sqrt(-1),asin(2), yacosh(0).
| Expresión | 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 está indefinido |
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 |
Comparaciones de $x con funciones PHP
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 |
Comparación amplia con == {#types.comparisions-loose}
* true anterior a PHP 8.0.0.
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 |
Comparación estricta con === {#type.comparisons-strict}