is_null()・isset()・empty()の比較
phpのコードを書いているとif文とかで使う比較にis_null()・isset()・empty()があります。どれも似たような意味で動きも似ています。同じようなまとめをされている方も多い中、復習のためあえて自分でコードを書いて確認したので残しておきます。
確認用のコード
画面で見やすいように phpをhtmlに埋め込んでブラウザで確認しました。
php-test.html
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<?php
//空文字:""
$brank = "";
//文字列:"true"
$str = "true";
//数字のゼロ:0
$zero = 0;
//数字のイチ:1
$one = 1;
//空の配列:array()
$arrBrank = array();
//特定の配列:array('X','Y')
$arrXY = array('X','Y');
//未初期化:$val
$val;
//真値:true
$valBool = true;
//NULL:null
$valNull = null;
echo '空文字:""<br />';
echo 'is_null:' . (is_null($brank) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($brank) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($brank) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '文字列:"true"<br />';
echo 'is_null:' . (is_null($str) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($str) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($str) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '数字のゼロ:0<br />';
echo 'is_null:' . (is_null($zero) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($zero) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($zero) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '数字のイチ:1<br />';
echo 'is_null:' . (is_null($one) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($one) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($one) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '空の配列:array()<br />';
echo 'is_null:' . (is_null($arrBrank) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($arrBrank) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($arrBrank) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '特定の配列:array(\'X\',\'Y\')<br />';
echo 'is_null:' . (is_null($arrXY) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($arrXY) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($arrXY) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '未初期化:$val<br />';
echo 'is_null:' . (is_null($val) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($val) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($val) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo '真値:true<br />';
echo 'is_null:' . (is_null($valBool) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($valBool) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($valBool) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
echo 'NULL:null<br />';
echo 'is_null:' . (is_null($valNull) ? 'TRUE' : 'FALSE') . '<br />';
echo 'isset:' . (isset($valNull) ? 'TRUE' : 'FALSE') . '<br />';
echo 'empty:' . (empty($valNull) ? 'TRUE' : 'FALSE') . '<br />';
echo '<br />';
?>
</body>
</html>
出力結果
空文字:""
is_null:FALSE
isset:TRUE
empty:TRUE
文字列:"true"
is_null:FALSE
isset:TRUE
empty:FALSE
数字のゼロ:0
is_null:FALSE
isset:TRUE
empty:TRUE
数字のイチ:1
is_null:FALSE
isset:TRUE
empty:FALSE
空の配列:array()
is_null:FALSE
isset:TRUE
empty:TRUE
特定の配列:array('X','Y')
is_null:FALSE
isset:TRUE
empty:FALSE
未初期化:$val
is_null:TRUE
isset:FALSE
empty:TRUE
真値:true
is_null:FALSE
isset:TRUE
empty:FALSE
NULL:null
is_null:TRUE
isset:FALSE
empty:TRUE
どれが良いとか悪いとかはありませんが、コードの全体を見渡して統一されてるとか、直感的にわかりやすいものを選んでいきたいですね。