楽せず楽しむ

仕事、生活、生き方、考え方、広い意味での自立を目指して頑張ります。

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