[PHP] nullチェックは厳密に

ITPHP

先日「null」の時だけ処理したいケースがあって、null判定を検証していた際にびっくりしたことがあったので、そのメモです。

検証環境:PHP 7.3.6

値が空文字だった場合

値が空文字だった場合のnull判定処理です。

<?php

if('' != null) {
    echo 'Yes!';
} else {
    echo 'No!';
}

if(is_null('')) {
    echo 'Yes!';
} else {
    echo 'No!';
}

if('' !== null) {
    echo 'Yes!';
} else {
    echo 'No!';
}

出力結果:

No!No!Yes!

2,3番目の判定はその通りかと思いますが、問題は1番目。

if('' != null) {
    echo 'Yes!';
} else {
    echo 'No!';
}

これが No! 、false判定でした。

” != null

” と null は違うので、これは true だと思っていました。

このような結果だったので、試しにこのコードを実行すると

if('' == null) {
    echo 'Yes!';
} else {
    echo 'No!';
}

これの出力結果は Yes! 、true でした。

空文字とnullを==で比較すると、trueなんですね。

nullに限らない話ですが、判定処理を書く場合は厳密に書いて、手元での検証も注意しようと思います。

以上になります。

スポンサーリンク

Posted by nobuhiro harada