ゴミ溜め@技術系日常系雑文

主にWeb技術やそのほかつまづいたこととか引っかかって調べたこととかをまとめてます。

はてなダイアリーから引っ越しました。)

論理値へのparse、isset()、empty()、is_null()したときの戻り値

PHPで論理値へのparse、isset()、empty()、is_null()したときの戻り値をまとめてみた。
ありふれたエントリーだけど自分用のメモに。

ソース(is_.php)

<?php
$num0 = 0;
$num1 = 1;
$num1_ = -1;

$str = "";
$str0 = "0";
$str1 = "1";
$stra = "a";

$null = null;
$var;

$array = array();
$array1 = array(1);

echo "to boolean : \n";
echo "!!(\$num0)\t:\t" . var_export(!!($num0),true) . "\n";
echo "!!(\$num1)\t:\t" . var_export(!!($num1),true) . "\n";
echo "!!(\$num1_)\t:\t" . var_export(!!($num1_),true) . "\n";
echo "!!(\$str)\t:\t" . var_export(!!($str),true) . "\n";
echo "!!(\$str0)\t:\t" . var_export(!!($str0),true) . "\n";
echo "!!(\$str1)\t:\t" . var_export(!!($str1),true) . "\n";
echo "!!(\$stra)\t:\t" . var_export(!!($stra),true) . "\n";
echo "!!(\$null)\t:\t" . var_export(!!($null),true) . "\n";
echo "!!(\$var)\t:\t" . var_export(!!($var),true) . "\n";
echo "!!(\$array)\t:\t" . var_export(!!($array),true) . "\n";
echo "!!(\$array1)\t:\t" . var_export(!!($array1),true) . "\n";
echo "!!(\$array[1])\t:\t" . var_export(!!($array[1]),true) . "\n";

echo "\nisset() : \n";
echo "isset(\$num0)\t:\t" . var_export(isset($num0),true) . "\n";
echo "isset(\$num1)\t:\t" . var_export(isset($num1),true) . "\n";
echo "isset(\$num1_)\t:\t" . var_export(isset($num1_),true) . "\n";
echo "isset(\$str)\t:\t" . var_export(isset($str),true) . "\n";
echo "isset(\$str0)\t:\t" . var_export(isset($str0),true) . "\n";
echo "isset(\$str1)\t:\t" . var_export(isset($str1),true) . "\n";
echo "isset(\$stra)\t:\t" . var_export(isset($stra),true) . "\n";
echo "isset(\$null)\t:\t" . var_export(isset($null),true) . "\n";
echo "isset(\$var)\t:\t" . var_export(isset($var),true) . "\n";
echo "isset(\$array)\t:\t" . var_export(isset($array),true) . "\n";
echo "isset(\$array1)\t:\t" . var_export(isset($array1),true) . "\n";
echo "isset(\$array[1])\t:\t" . var_export(isset($array[1]),true) . "\n";

echo "\nempty() : \n";
echo "empty(\$num0)\t:\t" . var_export(empty($num0),true) . "\n";
echo "empty(\$num1)\t:\t" . var_export(empty($num1),true) . "\n";
echo "empty(\$num1_)\t:\t" . var_export(empty($num1_),true) . "\n";
echo "empty(\$str)\t:\t" . var_export(empty($str),true) . "\n";
echo "empty(\$str0)\t:\t" . var_export(empty($str0),true) . "\n";
echo "empty(\$str1)\t:\t" . var_export(empty($str1),true) . "\n";
echo "empty(\$stra)\t:\t" . var_export(empty($stra),true) . "\n";
echo "empty(\$null)\t:\t" . var_export(empty($null),true) . "\n";
echo "empty(\$var)\t:\t" . var_export(empty($var),true) . "\n";
echo "empty(\$array)\t:\t" . var_export(empty($array),true) . "\n";
echo "empty(\$array1)\t:\t" . var_export(empty($array1),true) . "\n";
echo "empty(\$array[1])\t:\t" . var_export(empty($array[1]),true) . "\n";

echo "\nis_null()\n";
echo "is_null(\$num0)\t:\t" . var_export(is_null($num0),true) . "\n";
?>

結果

pi@raspberrypi ~ $ php is_.php
to boolean :
!!($num0)       :       false
!!($num1)       :       true
!!($num1_)      :       true
!!($str)        :       false
!!($str0)       :       false
!!($str1)       :       true
!!($stra)       :       true
!!($null)       :       false
PHP Notice:  Undefined variable: var in /home/pi/is_.php on line 26
!!($var)        :       false
!!($array)      :       false
!!($array1)     :       true
PHP Notice:  Undefined offset: 1 in /home/pi/is_.php on line 29
!!($array[1])   :       false

isset() :
isset($num0)    :       true
isset($num1)    :       true
isset($num1_)   :       true
isset($str)     :       true
isset($str0)    :       true
isset($str1)    :       true
isset($stra)    :       true
isset($null)    :       false
isset($var)     :       false
isset($array)   :       true
isset($array1)  :       true
isset($array[1])        :       false

empty() :
empty($num0)    :       true
empty($num1)    :       false
empty($num1_)   :       false
empty($str)     :       true
empty($str0)    :       true
empty($str1)    :       false
empty($stra)    :       false
empty($null)    :       true
empty($var)     :       true
empty($array)   :       true
empty($array1)  :       false
empty($array[1])        :       true

is_null()
is_null($num0)  :       false
is_null($num1)  :       false
is_null($num1_) :       false
is_null($str)   :       false
is_null($str0)  :       false
is_null($str1)  :       false
is_null($stra)  :       false
is_null($null)  :       true
PHP Notice:  Undefined variable: var in /home/pi/is_.php on line 68
is_null($var)   :       true
is_null($array) :       false
is_null($array1)        :       false

警告が出てる箇所は要注意。

  1. 初期化してない変数を論理値に変換
  2. 配列に対して存在しないキーを指定して論理値に変換
  3. 初期化してない変数をis_nuill()で評価

どんなときでもとにかく変数は初期化すること!

そのほか、実現したい内容に合わせて使い分ける。