LoginSignup
2
1

More than 5 years have passed since last update.

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

Posted at

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


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

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1