PHP の 0、""、null、false の違いをまだ理解していない人が多く、これらの違いはデータ判定の正確性と安全性に影響を与えることがあり、プログラムのテスト実行に多大な問題を引き起こします。
まず例を見てみましょう:
$str1 = null;
$str2 = false;
echo $str1==$str2 ? '等しい' : '等しくない';
$str3 = " ";
$str4 = 0;
echo $str3==$str4 ? '等しい' : '等しくない';
$str5 = 0;
$str6 = '0';
echo $ str5= ==$str6 ? '等しい' : '等しくない';
$str7=0;
$str=false;
echo $str7==$str8 ? '等しい' : '等しくない';
? >
実行結果:
//等しい、等しい、等しくない、等しい。
その理由は、PHP の変数は C 言語の構造体に格納され、空の文字列、NULL、および false はすべて値 0 で格納されます。この構造体には zend_uchartype; のようなメンバー変数があり、型を保存するために使用されます。変数の値、空の文字列の型は string、NULL の型は NULL、false はブール値です。
これを出力するには、echo gettype(''); を使用できます。 === 演算子は値を比較するだけでなく、型も比較するため、3 番目の演算子は false になります。
したがって、=== は次の function と等しいと言えます:
functioneq($v1,$v2)
{
if($v1==$v2&&gettype($v1)
==gettype($v2)) {
return1;
} else {
return0;
}
}
空の文字列 ( '')、false、NULL、および 0 は値が同じですが、型が異なります。
注:
NULL は 2 つの場合に特殊な型です
1. $var = NULL;