Contents
- UNIX
- Windows
- サーバ
- プログラミング言語
- データベース
- プロトコル
- サービス
- オープンソース
- 規格・技術
- アプリケーション
- PC
- DEVICE
- その他(未分類)
お問合せ:
メールフォーム
否定の!、is_null()、isset()、empty() の細かな挙動の違いをすぐ忘れるのでメモ。
check() という関数を作り、「空文字」「文字列の0」「数値の0」「false」「null」「空の配列」で動作確認を行った。
動作確認で使用したコード
<?php
$empty_str = '';
$str0 = '0';
$int0 = 0;
$false = false;
$null = null;
$empty_array = array();
check('empty_str', $empty_str);
check('str0', $str0);
check('int0', $int0);
check('false', $false);
check('null', $null);
check('empty_array', $empty_array);
function check($variable_name, $variable)
{
$ret = var_export( ! $variable, true);
echo "! $$variable_name => $ret";
echo "\n";
$ret = var_export(is_null($variable), true);
echo "is_null($$variable_name) => $ret";
echo "\n";
$ret = var_export(isset($variable), true);
echo "isset($$variable_name) => $ret";
echo "\n";
$ret = var_export(empty($variable), true);
echo "empty($$variable_name) => $ret";
echo "\n";
echo "\n";
}
?>
実行結果
! $empty_str => true is_null($empty_str) => false isset($empty_str) => true empty($empty_str) => true ! $str0 => true is_null($str0) => false isset($str0) => true empty($str0) => true ! $int0 => true is_null($int0) => false isset($int0) => true empty($int0) => true ! $false => true is_null($false) => false isset($false) => true empty($false) => true ! $null => true is_null($null) => true isset($null) => false empty($null) => true ! $empty_array => true is_null($empty_array) => false isset($empty_array) => true empty($empty_array) => true
特に気をつけておいた方がいい点
・null値を持つ変数に isset() 関数を適用すると、false が返る。 ・否定の ! と empty() 関数の挙動は同一である。! は empty() のエイリアス?
なお、明確に「空の配列」を判定したい時は以下のようにすべき。
is_array($arr) && empty($arr)
empty($arr) だけの判定だと、$arr に 空文字が入っていた場合でも true になってしまうので。