# Таблицы сравнения типов PHP

Следующие таблицы показывают работу PHP с типами переменных и операторами сравнения при слабых и строгих сравнениях. Эта информация также относится к разделу документации по приведению типов. Написать раздел разработчиков PHP воодушивили комментарии пользователей и работа над фреймворком » BlueShoes.

Перед началом работы с таблицами вспомним базовую информацию о типах. Наример, `"42"` — строка (string), а `42` — целое число (int), `false` — логическое значение (bool), а `"false"` — строка (string).

> Замечание:

> HTML-формы не передают логические переменные, целые или дробные числа: из форм приходят только строки. Функция is_numeric() проверяет, относится ли строка к числовой.

> Замечание:

> Выражение `if ($x)`, если переменную $x не определили, сгенерирует ошибку уровня `E_NOTICE`, поэтому переменную сначала инициализируют или в первом условии проверяют переменную языковой конструкцией empty() или isset().

> Замечание:

> Отдельные арифметические операции возвращают значение, которое представляет константа `NAN` (англ. Not A Number, нечисло). Строгое или нестрогое сравнение такого значения с другим, включая его само, но исключая `true`, вернёт `false`: `NAN != NAN` и `NAN !== NAN`. Примеры операций, которые возвращают константу `NAN`: `sqrt(-1)`, `asin(2)` и `acosh(0)`.

Сравнение типов переменной $x и результатов функций PHP, связанных с типами
Выражение | 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 не определена | 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`

Гибкое сравнение через оператор `==`
| `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` до 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`

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