PHPのempty関数に色んな値を入れた時の挙動
開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+PHP 7.1.7。
isset関数の挙動を調べたときに、empty関数はどうなのだろうと思って調べました。
<?php $val = null; $val2 = "ok"; $val3 = false; $val4 = []; $val5 = ["test" => null]; $val6 = ""; $val7 = "ok"; unset($val7); $val8 = -1; $val9 = 0; $var10 = ["fruits" => "orange"]; if(!empty($val)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val2)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val3)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val4)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val5["test"])){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val6)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val7)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val8)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($val9)){ echo "true"; }else{ echo "false"; } echo "<br>"; if(!empty($var10["hoge"])){ echo "true"; }else{ echo "false"; } ?>
実行結果
空の配列や空文字、null,false,unsetで削除した変数,0,存在しない配列のキーはすべて、偽となって、-1は偽にはならないようです。
真偽判定はisset関数よりもempty関数を用いたほうが使い勝手が良さそう。
参考リンク
PHP: empty - Manual