В PHP, в чем разница между is_null
и ==null
в PHP? Какова квалификация для возврата true?
PHP is_null() и == null
Ответ 1
is_null
совпадает с === null
. Оба возвращают true, когда переменная null
(или не задана).
Обратите внимание, что я использую ===
, а не ==
. ===
сравнивает тип и значение.
Ответ 2
Итак, вы можете понять это лучше:
$a = null;
$b = 0;
is_null($a) // TRUE
$a == null // TRUE
$a === null // TRUE
is_null($b) // FALSE
$b == null // TRUE
$b === null // FALSE
Ответ 3
Есть пара действительно хороших диаграмм на сайте php.net, которые показывают, как реагируют разные значения:
Ответ 4
Вы можете проверить сравнение между is_null() и null === $var
Ответ 5
===null
рекомендуется Расмусом Лердорфом, изобретателем PHP. Расмус говорит, что тест на ноль быстрее, чем тест на isset
. Его рекомендация является достаточной причиной, чтобы серьезно взглянуть на разницу. Разница была бы существенной, если бы у вас был небольшой цикл, проходящий один и тот же код тысячи раз в одном запросе веб-страницы.
UPD: Некоторый тест скорости для is_null и строгого сравнения:
PHP 5.5.9
is_null - float(2.2381200790405)
=== - float(1.0024659633636)
PHP 7.0.0-dev
is_null - float(1.4121870994568)
=== - float(1.4577329158783)
Ответ 6
==
не проверяет тип, поэтому каким-то образом что-то вроде строки ''
или строки 'null'
может оказаться равным нулю.
Использовать знак тройного равенства, ===
, чтобы не только проверить два значения равными, но также и то, что они одного типа.