Подтвердить что ты не робот

PHP is_null() и == null

В PHP, в чем разница между is_null и ==null в PHP? Какова квалификация для возврата true?

4b9b3361

Ответ 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, которые показывают, как реагируют разные значения:

Сравнение типов - php.net

Ответ 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' может оказаться равным нулю.

Использовать знак тройного равенства, ===, чтобы не только проверить два значения равными, но также и то, что они одного типа.