Следующие таблицы демонстрируют работу 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 ситуация
изменилась: строка трактуется как пустая.