Manuel PHP
Précédent |  | Suivant

# Annexe M. Comparaison de types en `PHP`

La table suivante résume les différents comportement 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 string, alors que `42` est un integer. `FALSE` est boolean alors que `"false"` est une string.

> 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)` lorsque `$x` est indéfini par générer une erreur de niveau `E_NOTICE`. Alternativement, utilisez plutôt les fonctions empty() ou isset(), ou encore, initialisez toutes vos variables.

Tableau M-1. Comparaisons de `$x` avec des fonctions `PHP`

| gettype() | empty() | is_null() | isset() | boolean : `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();` | array | `TRUE` | `FALSE` | `TRUE` | `FALSE`
`$x = false;` | boolean | `TRUE` | `FALSE` | `TRUE` | `FALSE`
`$x = true;` | boolean | `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`

Tableau M-2. 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` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `TRUE` | `TRUE` | `FALSE`
`1` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`0` | `FALSE` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `TRUE`
`-1` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE`
`"1"` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`"0"` | `FALSE` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`"-1"` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE`
`NULL` | `FALSE` | `TRUE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `TRUE` | `FALSE`
`array()` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE`
`"php"` | `TRUE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE`

Tableau M-3. 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` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`1` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`0` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`-1` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`"1"` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`"0"` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE` | `FALSE`
`"-1"` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE` | `FALSE`
`NULL` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE` | `FALSE`
`array()` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE` | `FALSE`
`"php"` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `FALSE` | `TRUE`

> Note PHP 3.0 : La chaîne de valeur `"0"` était considéré comme non vide en `PHP` 3. Ce comportement a changé en `PHP` 4, où il est désormais considéré comme vide.

Précédent | Sommaire | Suivant
Domaine Unix : UNIX et UDG | Niveau supérieur | Liste des token de l'analyseur