最近気づいた事

February 4th, 2011

PHPをさわるようになって気づいたんですが、条件分岐をする際に、値の「0」と「NULL」は同じ意味なんですね...。

<?php
$arr = array(
    "zero1" => "0",
    "zero2" => 0,
    "null1" => "",
    "null2" => NULL,
    "null3" => "NULL",
);

foreach ($arr as $key => $value) {
    if (!$value) {
        echo $key. " => null - ". $value. "<br>";
    } else {
        echo $key. " => 入ってる - ". $value. "<br>";
    }
}

/*
出力結果
  zero1 => null - 0
  zero2 => null - 0
  null1 => null - 
  null2 => null - 
  null3 => 入ってる - NULL
*/
?>

追記:isset()とis_null()を使った判定

上の配列で、isset()とis_null()を使って判定した場合の情報を追記(2013/07/27)しておきます。

<?php
foreach ($arr as $key => $value) {
    echo 'isset('. $key. ') : '. (isset($value) ? 'true' : 'false'). '<br>';
    echo 'is_null('. $key. ') : '. (is_null($value) ? 'true' : 'false'). '<br>';
    echo '<br>';
}

/*
出力結果
  zero1 : isset : true
  zero1 : is_null : false

  zero2 : isset : true
  zero2 : is_null : false

  null1 : isset : true
  null1 : is_null : false

  null2 : isset : false
  null2 : is_null : true

  null3 : isset : true
  null3 : is_null : false
*/
?>
February 4th, 2011