php нулевой или пустой?
У меня есть вопрос относительно NULL
в PHP:
$a = '';
if($a == NULL) {
echo 'is null';
}
Почему я вижу ноль, когда $a
пустая строка? Это ошибка?
7 ответов
То, что вы ищете, это:
if($variable === NULL) {...}
PHP обрабатывает NULL, false, 0 и пустую строку как равные.
Как показано в следующей таблице, empty($foo)
эквивалентно $foo==null
а также is_null($foo)
имеет ту же функцию $foo===null
, В таблице также показаны некоторые хитрые значения, касающиеся null
сравнение. (ϕ обозначает неинициализированные переменные.)
Я никогда не пользуюсь empty()
а также is_null()
функции. Использование простого сравнения менее двусмысленно, быстрее и чище.
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
Проверять ==
против ===
'' == NULL
вернул бы истину0 == NULL
вернул бы истинуfalse == null
вернул бы истину
в то время как
'' === NULL
вернул бы ложь0 === NULL
вернул бы ложьfalse === NULL
вернул бы ложь
Нет, это не ошибка. Взгляните на Loose сравнения с таблицей == (вторая таблица), которая показывает результат сравнения каждого значения в первом столбце со значениями в других столбцах:
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
Там вы можете увидеть, что пустая строка ""
по сравнению с false
, 0
, NULL
или же ""
даст истину.
Вы можете использовать is_null
вместо этого [docs] или строгое сравнение (третья таблица).
Это не ошибка, а нормальное поведение PHP. Это происходит потому, что ==
Оператор в PHP не проверяет тип.
'' == null == 0 == false
Если вы также хотите проверить, имеют ли значения одинаковый тип, используйте ===
вместо. Чтобы глубоко изучить эту разницу, пожалуйста, прочитайте официальную документацию.
Если вы используете ==
PHP обрабатывает пустую строку или массив как null
, Чтобы сделать различие между null
а также empty
Либо использовать ===
или же is_null
, Так:
if($a === NULL)
или же if(is_null($a))
NULL обозначает переменную без значения. Чтобы проверить, является ли переменная NULL, вы можете использовать
is_null($var)
или сравнение (===
) с NULL. Однако оба способа генерируют предупреждение, если переменная не определена. Похожий на
isset($var)
и
empty($var)
, которые можно использовать как функции.
var_dump(is_null($var)); // true
var_dump($var === null); // true
var_dump(empty($var)); // true
Подробнее в разделе Как проверить, является ли переменная NULL в PHP?
Просто в аддон, если кто-то имеет дело с
, это сработает, если иметь дело с
.
Замени его на str_replace()
сначала и проверьте это с помощью empty()
empty(str_replace(" " ,"" , $YOUR_DATA)) ? $YOUR_DATA = '--' : $YOUR_DATA;
Использование empty
- http://php.net/manual/en/function.empty.php.
Пример:
$a = '';
if(empty($a)) {
echo 'is empty';
}