Comparaison de types en PHP La table suivante résume les différents comportements de PHP avec les types et opérateurs de comparaison, stricte ou large. 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 &string;, alors que 42 est un &integer;. &false; est bool alors que "false" est une &string;. 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. 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. Des opérations numériques peuvent donner une valeur représentée par la constante NAN. Toutes les comparaisons de cette valeur avec une autre valeur, y compris cette même valeur, à l'exception de &true; auront comme résultat &false; (i.e. NAN != NAN et NAN !== NAN). Exemples d'opérations qui produisent la valeur NAN : sqrt(-1), asin(2), et acosh(0). Comparaisons de <varname>$x</varname> avec des fonctions 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 est indéfini 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; &integer; &false; &false; &true; &true; $x = 42; &integer; &false; &false; &true; &true; $x = 0; &integer; &true; &false; &true; &false; $x = -1; &integer; &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;
Comparaison large avec <literal>==</literal> &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; antérieur à PHP 8.0.0.
Comparaison stricte avec <literal>===</literal> &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;