PHPのis_null()・isset()・empty()の比較の復習メモ

# is_null()・isset()・empty()の比較

phpのコードを書いているとif文とかで使う比較にis_null()・isset()・empty()があります。どれも似たような意味で動きも似ています。同じようなまとめをされている方も多い中、復習のためあえて自分でコードを書いて確認したので残しておきます。

## 確認用のコード

画面で見やすいように　ｐｈｐをｈｔｍｌに埋め込んでブラウザで確認しました。

```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



---

どれが良いとか悪いとかはありませんが、コードの全体を見渡して統一されてるとか、直感的にわかりやすいものを選んでいきたいですね。