 Contents
 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 になってしまうので。