Comparaison de types en PHP

La table suivante r�sume les diff�rents comportements de PHP avec les types et op�rateurs de comparaison, strictes ou larges. Cette table est aussi reli�e au transtypage. Elle a �t� inspir�e par diff�rents commentaires d'utilisateurs, et par le travail fait chez » BlueShoes.

Avant d'utiliser ces tables, il est important de comprendre les types et leur signification. Par exemple, "42" est une cha�ne de caract�res, alors que 42 est un entier. FALSE est boolean alors que "false" est une cha�ne de caract�res.

Note: Les formulaires HTML ne connaissent pas les entiers, nombres � virgules et autres bool�ens. Pour savoir si une structure est un entier, utilisez is_numeric().

Note: La ligne if ($x) g�n�re une erreur de niveau E_NOTICE lorsque $x est ind�fini. Alternativement, utilisez plut�t les fonctions empty() ou isset(), ou encore, initialisez toutes vos variables.

Comparaisons de $x avec des fonctions PHP
Expression gettype() empty() is_null() isset() boolean : if($x)
$x = ""; cha�ne de caract�res TRUE FALSE TRUE FALSE
$x = null NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x est ind�fini NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; entier FALSE FALSE TRUE TRUE
$x = 42; entier FALSE FALSE TRUE TRUE
$x = 0; entier TRUE FALSE TRUE FALSE
$x = -1; entier FALSE FALSE TRUE TRUE
$x = "1"; cha�ne de caract�res FALSE FALSE TRUE TRUE
$x = "0"; cha�ne de caract�res TRUE FALSE TRUE FALSE
$x = "-1"; cha�ne de caract�res FALSE FALSE TRUE TRUE
$x = "php"; cha�ne de caract�res FALSE FALSE TRUE TRUE
$x = "true"; cha�ne de caract�res FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE

Comparaison large avec ==
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "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 TRUE TRUE
-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
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
"php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE

Comparaison stricte avec ===
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "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
array() 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