Возможный дубликат:
Оператор php == vs ===
У меня есть следующий фрагмент кода, и для меня не имеет смысла, почему NULL будет оцениваться тремя различными способами. Рассмотрим переменную $uploaded_filenames_array
как UNKNOWN – мы не знаем, все еще массив или NULL. Это то, что мы пытаемся проверить.
//----------------------------------------------- if (is_null($uploaded_filenames_array)){ echo "is_null"; } else{ echo "is_NOT_null"; } //----------------------------------------------- if ($uploaded_filenames_array == NULL){ echo "NULL stuff"; } else{ echo "not NULL stuff"; } //----------------------------------------------- if ($uploaded_filenames_array === NULL){ echo "NULL identity"; } else{ echo "not NULL identity"; } //-----------------------------------------------
Я получаю следующий ответ:
is_NOT_null NULL stuff not NULL identity
может ли кто-нибудь помочь понять, что такое программная разница между этими тремя способами проверки NULL?
is_null($a)
совпадает с $a === null
.
( $a === null
бит быстрее, чем is_null($a)
для сохранения одного вызова функции, но это не имеет значения, просто выберите стиль, который вам нравится.)
Для разницы ===
и ==
, прочитайте таблицы сравнения типов PHP
$a === null
истинно, только если $a
равно null
.
Но для ==
, ниже также возвращает true
.
null == false null == 0 null == array() null == ""
Вы должны прочитать это http://php.net/manual/en/language.operators.comparison.php . Также нет необходимости использовать функцию is_null
для проверки только на NULL
. ===
быстрее …
Эксплуатационные тесты ===
для одного и того же значения и одного и того же ТИПА. Пустая строка может оценивать значение null, но она не относится к null
типу – следовательно, это не удается.
Оператор ==
основном проверяет, являются ли они почти одинаковыми – тем самым оценивайте их до одного и того же значения. Будучи пустым, это будет оцениваться как null, поэтому это не удается.
Функция is_null
выполняет довольно тщательную проверку – гораздо больше, чем оператор ===
.
==
проверяет, равно ли значение, например:
>> "123" == 123 << true
===
проверяет, равны ли значение и тип , например:
>> "123" === 123 << false