разница между is_null "== NULL" и "=== NULL" в PHP

Возможный дубликат:
Оператор 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