isset() empty() などにnullや空文字を与えた時の結果
存在チェック等、値と返り値が何年経っても覚えられないのでメモ書き
null '' 0 1 -1 '0' '1' '[]' '[1]'
if false false false true true false true false true
isset false true true true true true true true true
empty true true true false false true false true false
is_null true false false false false false false false false
if は、値が入っていればtrueを返すイメージ
isset は、変数が存在していない or null じゃなければ true
empty は、定義幅が広い。文字列 '0' がtrue なのが個人的に違和感
is_null は文字通り null の時だけ true
変数が存在するかチェックしたいときは isset($value)
変数の中身が怪しい時は !empty($value)
を活用する感じかな。。
そもそも、
存在しない可能性がある変数を使ったり
中身の予想がつかないプログラムが撲滅できると良いんだけど
複数人プロジェクトや、外部の人間と一緒の開発・古いコードの改修があると
そうも言ってられない。。
書き出しプログラム
<?php
foreach([null, '', 0, 1, -1, '0', '1', , [1]] as $value){
if($value){
$if = true;
}else{
$if = false;
}
$isset = isset($value);
$empty = empty($value);
$is_null = is_null($value);
}
echo "\t".'null'."\t".'\'\''."\t".'0'."\t".'1'."\t".'-1'."\t".'\'0\''."\t".'\'1\''."\t".'\'[]\''."\t".'\'[1]\''.PHP_EOL;
echo 'if';
foreach($if as $val){
echo "\t".var_export($val, true);
}
echo PHP_EOL;
echo 'isset';
foreach($isset as $val){
echo "\t".var_export($val, true);
}
echo PHP_EOL;
echo 'empty';
foreach($empty as $val){
echo "\t".var_export($val, true);
}
echo PHP_EOL;
echo 'is_null';
foreach($is_null as $val){
echo "\t".var_export($val, true);
}
echo PHP_EOL;
より詳細なPHP公式マニュアル
https://www.php.net/manual/ja/types.comparisons.php