2012-03-12 4 views
40

PHPでは、is_null==nullのPHPの違いは何ですか?両方が真実を返すための資格は何ですか?PHP is_null()と== null

+1

これは重複していません - 他の質問は "=="ではなく "=="と答える – derekdreery

答えて

54

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

私は===であり、==ではありません。 ===は、タイプと値を比較します。

+0

変数が設定されていない場合、 'is_null()'は ' true "を返しますが、" notice:undefined variable "エラーもスローします。これを避けるには、 '!isset($ var)'を実行すると同等ですが、唯一の欠点は変数を 'isset()'に渡せるということです。 –

+0

@Rocket「あなたは同じですか?」と言うときは、エラーと警告が生成されるという点で同じ**を意味しますか? – Pacerier

+0

@Pacerier:うん!この例を見てください:https://eval.in/297496 –

11

異なる値がどのように反応するかを示しphp.netサイト上のカップルは本当に良いチャートがあります。

Type Comparison - php.net

+0

+1: –

2

==タイプをチェックしていないので、何らかの形で、文字列''や文字列'null'などがnullとなることがあります。

トリプルイコール記号===を使用すると、2つの値が等しいことを確認するだけでなく、同じタイプであることもチェックできます。

52

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

$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

すばらしい例! +1 –

5

あなたはIS_NULL()ヌルとの比較=== $のVAR

Good comparison between two

+0

FYI、明らかに、それはパフォーマンスを比較しているチャートです。私はリンクをたどって、彼らがまったく違う微妙な状況があるかどうかを見てみましたが、それはそれが何ではないのです。 – ToolmakerSteve

4

===nullが推奨されます確認することができますPHPの発明者であるRasmus Lerdorf氏 Rasmusはnullのテストがissetのテストより速いと言います。彼の推薦は、その違いを真剣に見る十分な理由です。 1つのWebページ要求で同じコードを何千回も繰り返し実行していた場合、その違いは大きくなります。

+4

誰かが何かを言うと言うとき、リンクするか、[引用が必要](http://xkcd.com/285)。 – Pacerier

+0

FWIW、これはOPによって尋ねられているものではありません。 'isset'は別の意味を持っています。 – ToolmakerSteve

+0

@ToolmakerSteve戻り値についてのテーマは、最良回答(マーカー)で非常によく記述されていました。これは速度の違いについての追加です –