phpにおけるnull 0 empty「」の違い
1183 ワード
空文字列(')とNULLの関係をまだ認識していない人も多いのではないでしょうか!!ここで説明しましょう:まず一例を見てみましょう:'==NULL;==NULL;実行すると1つ目はtrueで、2つ目はfalseです!
どうしてこんなことになったの?実はPHPでは中空文字列もNULLも値0で格納されています!
==は値のみを比較するので、最初はtrue!でも2つ目はなぜfalseなの!?なぜなら、PHPには変数がC言語の構造体で格納されており、この構造体にはzend_があるからである.uchar type;このようなメンバー変数は、変数のタイプを保存するために使用され、空の文字列のタイプはstringであり、NULLのタイプはNULLである.
この点はecho gettype(');とecho gettype(NULL);印刷してみましょう!===演算子は比較値だけでなく、比較タイプもあるので、2番目はfalseです!==は次の関数に等しいと言えます.
だから空の文字列(')、NULLと0は値が等しくてタイプが違います!注意:NULLは特殊なタイプです.どちらの場合もNULL 1.$var = NULL;
2. $var;
まとめ:
文字列もNULLも値0で格納されるのでnull==0=''です.
null==0 null==empty(成立)
null==0 null==empty(成立しない)
以下すべて出力あり
どうしてこんなことになったの?実はPHPでは中空文字列もNULLも値0で格納されています!
==は値のみを比較するので、最初はtrue!でも2つ目はなぜfalseなの!?なぜなら、PHPには変数がC言語の構造体で格納されており、この構造体にはzend_があるからである.uchar type;このようなメンバー変数は、変数のタイプを保存するために使用され、空の文字列のタイプはstringであり、NULLのタイプはNULLである.
この点はecho gettype(');とecho gettype(NULL);印刷してみましょう!===演算子は比較値だけでなく、比較タイプもあるので、2番目はfalseです!==は次の関数に等しいと言えます.
function eq($var1, $var2) {
if($var1 == $var2 && gettype($var1) == gettype($var2)) {
return 1;
} else {
return 0;
}
}
だから空の文字列(')、NULLと0は値が等しくてタイプが違います!注意:NULLは特殊なタイプです.どちらの場合もNULL 1.$var = NULL;
2. $var;
まとめ:
文字列もNULLも値0で格納されるのでnull==0=''です.
null==0 null==empty(成立)
null==0 null==empty(成立しない)
以下すべて出力あり
if(0==null){
echo "0null";
echo "
";
}
if(null==''){
echo "nullkong";
echo "
";
}
if(null !== 0){
echo "abs null0";
echo "
";
}
if('' == 0){
echo "empty0";
}