論理値への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
警告が出てる箇所は要注意。
- 初期化してない変数を論理値に変換
- 配列に対して存在しないキーを指定して論理値に変換
- 初期化してない変数をis_nuill()で評価
どんなときでもとにかく変数は初期化すること!
そのほか、実現したい内容に合わせて使い分ける。