Таблицы сравнения типов 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