PHPでは、PHPのis_null
と==null
の違いは何ですか?両方がtrueを返すための資格は何ですか?
is_null
は=== null
と同じです。変数がnull
(または未設定)の場合、両方ともtrueを返します。
===
ではなく==
を使用していることに注意してください。 ===
は、タイプと値を比較します。
だからあなたはそれをよりよく理解することができます:
$a = null;
$b = 0;
is_null($a) // TRUE
$a == null // TRUE
$a === null // TRUE
is_null($b) // FALSE
$b == null // TRUE
$b === null // FALSE
Php.netサイトには、さまざまな値がどのように反応するかを示す非常に優れたグラフがいくつかあります。
===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)
is_null()とnull === $ var
==
は型をチェックしないため、何らかの理由で、文字列''
または文字列'null'
のようなものがnullと等しくなる場合があります。
3つの等号===
を使用して、2つの値が等しいことを確認するだけでなく、それらが同じ型であることも確認します。