Порівняльна таблиця типів PHP

Наступна таблиця демонструє поведінку типів PHP та операторів порівняння, як з м'яким, так і зі строгим порівнянням. Ця інформація також стосується теми маніпуляції з типами. Щоб створити цю таблицю, ми отримували натхнення від коментарів деяких користувачів та від роботи » BlueShoes.

Перед використанням даної таблиці важливо розуміти типи та їхні значення. Наприклад, "42" має рядковий тип (string), тоді як 42 має цілочисельний тип (int). Значення false має логічний тип (bool), тоді як "false" має рядковий тип (string).

Зауваження:

HTML-форми не передають цілочисельний тип (int), дробовий тип (float) чи логічний тип (bool); вони передають тільки рядковий тип. Щоб перевірити, чи рядок має число, можна використовувати is_numeric().

Зауваження:

Використання спрощеної перевірки, наприклад if ($x), коли $x є невизначеною, спричинить помилку рівня E_NOTICE. Краще, використовуйте empty() чи isset() та/або спочатку ініціалізуйте свою змінну.

Зауваження:

Деякі арифметичні операції можуть повернути значення, представлене константою NAN. Будь-яке м'яке чи строге порівняння цього значення з будь-яким іншим значенням, включаючи його самого, окрім 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