Следующие таблицы демонстрируют работу PHP с
типами переменных и
операторами
сравнения, как в случае свободного, так и в случае строгого
сравнения. Также эта информация относится к разделу документации
по приведению типов.
Вдохновением на создание этого раздела мы обязаны различным комментариям
пользователей и работе над
BlueShoes.
До осмотра таблиц, важно знать и понимать типы переменных и их значения.
К примеру, "42" -- строка,
в то время как 42 -- целое. FALSE --
логическое, а "false" --
строка.
Замечание:
HTML-формы не передают тип переменной: они всегда передают строки. Для
проверки является ли строка числом, используйте функцию
is_numeric().
Замечание:
Использование if ($x) пока $x не
определена сгенерирует ошибку E_NOTICE.
Вместо этого используйте функцию empty() или
isset() и/или инициализируйте переменную.
Таблица P-1. Сравнение типов $x и результатов функций PHP, связанных с типами
Выражение | gettype() | empty() | is_null() | isset() | логическое : if($x) |
---|
$x = ""; | строка | 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 = false; | логическое | TRUE | FALSE | TRUE | FALSE |
$x = true; | логическое | FALSE | FALSE | TRUE | TRUE |
$x = 1; | целое | FALSE | FALSE | TRUE | TRUE |
$x = 42; | целое | FALSE | FALSE | TRUE | TRUE |
$x = 0; | целое | TRUE | FALSE | TRUE | FALSE |
$x = -1; | целое | FALSE | FALSE | TRUE | TRUE |
$x = "1"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "0"; | строка | TRUE | FALSE | TRUE | FALSE |
$x = "-1"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "php"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "true"; | строка | FALSE | FALSE | TRUE | TRUE |
$x = "false"; | строка | FALSE | FALSE | TRUE | TRUE |
Таблица P-2. Гибкое сравнение с помощью ==
| 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 |
Таблица P-3. Жёсткое сравнение с помощью ===
| 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 |
Заметка о PHP 3.0:
Строка "0" считалась не пустой, в PHP4 ситуация
изменилась: строка трактуется как пустая.