|
Следующие таблицы демонстрируют работу PHP с типами переменных и операторами сравнения, как в случае свободного, так и в случае строгого сравнения.
До осмотра таблиц, важно знать и понимать типы переменных и их значения. Например, "42" - строка, в то время как 42 - это целое. FALSE - логическое, а "false" - строка.
Некоторые примечания: HTML-формы не передают тип переменной, они всегда передают строки. Для проверки является ли строка числом, используйте функцию is_numeric(). Использование if ($x) пока $x не определена сгенерирует ошибку E_NOTICE. Вместо этого используйте функцию empty() или isset() и/или инициализируйте переменную.
Таблица с равнения типов $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 |
Гибкое сравнение с помощью ==
| |
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 |
Жёсткое сравнение с помощью === (сравнение по значению и по типу)
| |
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 ситуация изменилась: строка трактуется как пустая.
По материалам сайта: http://www.php.su/
|