# Tabelle zu Typenvergleichen in PHP

Die folgenden Tabellen zeigen das Verhalten von Typen und Vergleichsoperatoren in PHP, sowohl für schwach und stark typisierte Vergleiche. Dieser Anhang steht im Zusammenhang mit dem Abschnitt zu Type juggling. Anregungen für diesen Abschnitt kamen aus verschiedenen Benutzerkommentaren und der Arbeit von » BlueShoes.

Bevor diese Tabellen verwendet werden ist es wichtig die Typen und ihre Bedeutungen zu verstehen. `"42"` ist zum Beispiel ein string, während `42` ein int ist. `false` ist ein bool, obwohl `"false"` ein string ist.

> Hinweis:

> HTML-Formulare übergeben keine integer, float oder boolesche Werte, sie übertragen strings. Um herauszufinden, ob ein string numerisch ist kann man is_numeric() verwenden.

> Hinweis:

> Wenn man einfach `if ($x)` verwendet, obwohl $x undefiniert ist, so wird ein Fehler der Stufe `E_NOTICE` erzeugt. Verwenden sie stattdessen empty() oder isset() und/oder initialisiere sie die verwendeten Variablen.

> Hinweis:

> Einige numerische Operationen können ein Ergebnis erzeugen, welches durch die Konstante `NAN` represäntiert wird. Jeder schwach oder stark typisierte Vergleich dieses Wertes mit beliebigen anderen Werten, einschließlich der Konstante selbst, außer mit `true`, wird `false` ergeben (d.h. `NAN != NAN` und `NAN !== NAN`). Beispiele für Operationen, die `NAN` ergeben sind u.a. `sqrt(-1)`, `asin(2)`, und `acosh(0)`.

Vergleiche von $x mittels PHP-Funktionen
Ausdruck | 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 ist undefiniert | 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`

Typschwache Vergleiche mittels `==`
| `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`

* vor PHP 8.0.0 `true`.

Typstarke Vergleiche mittels `===`
| `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`

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open