web-dev-qa-db-ja.com

PHP is_null()and == null

PHPでは、PHPのis_null==nullの違いは何ですか?両方がtrueを返すための資格は何ですか?

46
kel_ff0080

is_null=== nullと同じです。変数がnull(または未設定)の場合、両方ともtrueを返します。

===ではなく==を使用していることに注意してください。 ===は、タイプと値を比較します。

64
Rocket Hazmat

だからあなたはそれをよりよく理解することができます:

$a = null;
$b = 0;

is_null($a) // TRUE
$a == null  // TRUE
$a === null // TRUE
is_null($b) // FALSE
$b == null  // TRUE
$b === null // FALSE
58
Daniel Ribeiro

Php.netサイトには、さまざまな値がどのように反応するかを示す非常に優れたグラフがいくつかあります。

タイプ比較-php.net

13
keithhatfield

===nullは、PHPの発明者であるRasmus Lerdorfが推奨しています。 Rasmusは、nullのテストはissetのテストよりも速いと言います。彼の推薦は、違いを真剣に見る十分な理由です。 1つのWebページリクエストで同じコードを数千回通過する小さなループがある場合、違いは重要です。

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)
5
Akim Kelar

is_null()null === $ var

2つの間の良好な比較

5
Umut KIRGÖZ

==は型をチェックしないため、何らかの理由で、文字列''または文字列'null'のようなものがnullと等しくなる場合があります。

3つの等号===を使用して、2つの値が等しいことを確認するだけでなく、それらが同じ型であることも確認します。

3
DanRedux