14

重複の可能性:
php == vs === 演算子

私は次のコードフラグメントを持っていますが、NULL が 3 つの異なる方法で評価される理由がわかりません。変数$uploaded_filenames_arrayを UNKNOWN と考えてください。それがまだ配列なのか NULL なのかはわかりません。それが私たちがチェックしようとしているものです。

//-----------------------------------------------
if (is_null($uploaded_filenames_array)){
    echo "is_null";
}
else{
    echo "is_NOT_null";
}
//-----------------------------------------------
if ($uploaded_filenames_array == NULL){
    echo "NULL stuff";
}
else{
    echo "not NULL stuff";
}
//-----------------------------------------------
if ($uploaded_filenames_array === NULL){
    echo "NULL identity";
}
else{
    echo "not NULL identity";
}
//-----------------------------------------------

私は次の応答を得ています:

is_NOT_null 
NULL stuff 
not NULL identity 

NULLをチェックするこれら3つの方法のプログラム上の違いは何ですか?

4

4 に答える 4

19

is_null($a)と同じ$a === nullです。

( 1 つの関数呼び出しを保存$a === nullするよりも少し高速ですis_null($a)が、問題ありません。好きなスタイルを選択してください。)

===との違いについては、==PHP型比較表を参照してください。

$a === nullの場合にのみ true になり$aますnull

しかし==、以下も を返しますtrue

null == false
null == 0
null == array()
null == ""
于 2012-08-28T09:34:50.863 に答える
3

このhttp://php.net/manual/en/language.operators.comparison.phpを読む必要があります。また、is_nullのみをチェックするために関数を使用する必要はありませんNULL===より速いです...

于 2012-08-28T09:32:42.863 に答える
1

オペレーターは===、同じ値と同じ TYPE をテストします。空の文字列は null と評価される可能性がありますが、null型ではないため、これは失敗します。

演算子は基本的に、それらがほとんど同じかどうかを確認します。==それにより、同じ値に評価されます。空の場合、これは null と評価されるため、失敗します。

このis_null関数はかなり徹底したチェックを行います -===演算子のように。

于 2012-08-28T09:35:41.670 に答える
1

==が等しいかどうかをチェックします。例:

>> "123" == 123
<< true

===値と型が等しいかどうかを確認します。例:

>> "123" === 123
<< false
于 2012-08-28T09:32:07.120 に答える