【PHP入門】Nullの判定をする is_null, empty, isset関数

php-null

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPでのNull判定をする関数について解説していきます。

紹介する関数は、is_null, empty, isset関数の3つです。

is_null関数で Null判定をする

is_null() で変数が Null かどうか調べることができます。

nullならtrue, それ以外は falseなので、この関数を使用するのが Null判定では確実です。

is_null

is_null — 変数が null かどうか調べる

[ 説明 ]

is_null(mixed $value): bool

指定した変数が null かどうかを調べます。

[ パラメータ ]

value : 評価する変数

[ 戻り値 ]

value が null の場合に true、 それ以外の場合に false を返します。

引用元: PHP-Manual: is_null
<?php

$null_value = null;
$zero = 0;
$number = 1;
$double = 0.0;
$robotama = 'ロボ玉';
$str_zero = '0';
$str_num = '1';
$empty_str = '';
$space_str = ' ';
$null_str = 'NULL';
$empty_array = [];
$array = ['a', 'b', 'c'];
$object = new stdClass();

// 1. is_null() で変数が Null かどうか調べる

// is_null($変数) => nullだったら true

function Is_Null_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (is_null($target)) {
        echo "{$output} は、nullです" ."\n";
    } else {
        echo "{$output} は、nullではありません" ."\n";
    }
};

Is_Null_Judgment($null_value);

Is_Null_Judgment($zero);
Is_Null_Judgment($number);
Is_Null_Judgment($double);
Is_Null_Judgment($robotama);
Is_Null_Judgment($str_zero);

Is_Null_Judgment($str_num);
Is_Null_Judgment($empty_str);
Is_Null_Judgment($space_str);
Is_Null_Judgment($null_str);

Is_Null_Judgment($empty_array);
Is_Null_Judgment($array);
Is_Null_Judgment($object);

echo 'Is_Null_Judgment ------------------------------------' . "\n";
実行結果
null は、nullです
0 は、nullではありません
1 は、nullではありません
0 は、nullではありません
"ロボ玉" は、nullではありません
"0" は、nullではありません
"1" は、nullではありません
"" は、nullではありません
" " は、nullではありません
"NULL" は、nullではありません
[] は、nullではありません
["a","b","c"] は、nullではありません
{} は、nullではありません

empty関数で Null判定をする

empty() で変数が空であるかどうか調べることができます。

ポイントとすると「 null, 0, “0”, “”, [] 」は、空(empty)だと判定されます。

純粋なNull判定は、is_null関数がベストですが、empty関数はemptyな値、falsyな値の判定に役立ちます。

empty

empty — 変数が空であるかどうかを検査する

[ 説明 ]

empty(mixed $var): bool

変数が空であるかどうかを検査します。

変数が空であるとみなされるのは、変数が存在しない場合や 変数の値が false に等しい場合です。 

empty() は、変数が存在しない場合でも警告を発しません。

[ パラメータ ]

var : チェックする変数

変数が存在しなくても警告は発生しません。

つまり、empty() は本質的に !isset($var) || $var == false と同じことを簡潔に記述しているだけです。

[ 戻り値 ]

var が存在しない、 または空や0の値が設定されている場合、

つまり boolean のコンテキストで false と見なされる場合、 true を返します。

詳細は boolean への変換 を参照して下さい。

それ以外の場合は false を返します。

引用元: PHP-Manual: empty
<?php

$null_value = null;
$zero = 0;
$number = 1;
$double = 0.0;
$robotama = 'ロボ玉';
$str_zero = '0';
$str_num = '1';
$empty_str = '';
$space_str = ' ';
$null_str = 'NULL';
$empty_array = [];
$array = ['a', 'b', 'c'];
$object = new stdClass();


// 2. empty() で変数かどうか調べる

// empty($変数) => 空だったら true

function Empty_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (empty($target)) {
        echo "{$output} は、空です" ."\n";
    } else {
        echo "{$output} は、空ではありません" ."\n";
    }
}

Empty_Judgment($null_value);
Empty_Judgment($zero);
Empty_Judgment($number);

Empty_Judgment($double);
Empty_Judgment($robotama);
Empty_Judgment($str_zero);

Empty_Judgment($str_num);
Empty_Judgment($empty_str);
Empty_Judgment($space_str);

Empty_Judgment($null_str);
Empty_Judgment($empty_array);
Empty_Judgment($array);
Empty_Judgment($object);

echo 'Empty_Judgment ------------------------------------' . "\n";
実行結果
null は、空です
0 は、空です
1 は、空ではありません
0 は、空です
"ロボ玉" は、空ではありません
"0" は、空です
"1" は、空ではありません
"" は、空です
" " は、空ではありません
"NULL" は、空ではありません
[] は、空です
["a","b","c"] は、空ではありません
{} は、空ではありません

isset関数で Null判定をする

isset() は、変数が宣言されていること、そして null ではないことを判定します。

つまり、値がちゃんとSetされていることを確認する関数です。

is_null関数との違いとして、isset関数は、null以外の値ならtrueであることです。

「 null以外の値は、true / nullならfalse 」は、 is_null関数の逆の結果です。

isset

isset — 変数が宣言されていること、そして null とは異なることを検査する

[ 説明 ]

isset(mixed $varmixed ...$vars): bool

変数がセットされているかを調べます。

これは変数が宣言されており、 null とは異なる値だということです。

変数が、unset() により割当を解除された場合、 もはやセットされているとは見做されません。

null が代入されている変数をチェックしたときは、 isset() は false を返します。

null文字 ("\0") は PHP の null 定数とは異なることにも注意してください。

複数のパラメータが渡された場合は、 isset() は全てのパラメータがセットされている場合にだけ true を返します。

評価は左から右へと行われ、セットされていない値に出会うとすぐに評価が止まります。

[ パラメータ ]

var : 調べたい変数。

vars : 別の変数。

[ 戻り値 ]

var が存在して null 以外の値をとれば true、 そうでなければ false を返します。

引用元: PHP-Manual: isset
<?php

$null_value = null;
$zero = 0;
$number = 1;
$double = 0.0;
$robotama = 'ロボ玉';
$str_zero = '0';
$str_num = '1';
$empty_str = '';
$space_str = ' ';
$null_str = 'NULL';
$empty_array = [];
$array = ['a', 'b', 'c'];
$object = new stdClass();

// 1. isset() で変数が Nullではないかどうかを調べる
// 「 null以外の値は、true / nullならfalse 」 => is_null()の逆

// 変数の値が Setされている、またはNullではないことを確認するには、isset() を使用します。

// isset() は、Null以外であれば戻り値に trueを返します。

function IsSet_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (isset($target)) {
        echo "{$output} は、nullではありません" ."\n";
    } else {
        echo "{$output} は、nullです" ."\n";
    }
}

IsSet_Judgment($null_value);

IsSet_Judgment($zero);
IsSet_Judgment($number);
IsSet_Judgment($double);

IsSet_Judgment($robotama);
IsSet_Judgment($str_zero);
IsSet_Judgment($str_num);
IsSet_Judgment($empty_str);
IsSet_Judgment($space_str);
IsSet_Judgment($null_str);

IsSet_Judgment($empty_array);
IsSet_Judgment($array);
IsSet_Judgment($object);

echo 'IsSet_Judgment ------------------------------------' . "\n";

class Robotama {
    public $name = 'ロボ玉';
    public $like = 'ひまたね';
    public $from = 'グンマー帝国';
    public $cost = null;
}

// Object(Class)は、new でインスタンス化(実体化)する
$robotama = new Robotama;

function NullChecker ($object, $key) {
    if (isset($object->$key)) {
        echo "{$key}は、{$object->$key}" . "\n";
    } else {
        echo "{$key}は、nullな値です" . "\n";
    }
}

NullChecker($robotama, "name");
NullChecker($robotama, "like");
NullChecker($robotama, "from");
NullChecker($robotama, "cost");
実行結果
null は、nullです
0 は、nullではありません
1 は、nullではありません
0 は、nullではありません
"ロボ玉" は、nullではありません
"0" は、nullではありません
"1" は、nullではありません
"" は、nullではありません
" " は、nullではありません
"NULL" は、nullではありません
[] は、nullではありません
["a","b","c"] は、nullではありません
{} は、nullではありません

IsSet_Judgment ------------------------------------

nameは、ロボ玉
likeは、ひまたね
fromは、グンマー帝国
costは、nullな値です

SampleCode全文

<?php

// [ NULL判定をする方法とは ]

// 変数の値がNULLか空かを判定する手段として、is_null関数、empty関数、isset関数を使う方法があります。

// それぞれの関数には以下の働きがあります。

    // is_null関数 ----- 変数の値がNULLかそうではないか
    // empty関数 ----- 変数の値が空か
    // isset関数 ----- 変数の値がNULL以外か


// それぞれの返り値は以下のようになります。

    // is_null関数 ----- NULLの時にTURE、NULL以外はFALSE
    // empty関数 ----- 0、’0’、0.0、NULL、False、$array()、if($x)、未定義の変数はTRUE、それ以外はFALSE
    // isset関数 ----- NULL以外の時にTURE、NULLの時はFALSE


$null_value = null;
$zero = 0;
$number = 1;
$double = 0.0;
$robotama = 'ロボ玉';
$str_zero = '0';
$str_num = '1';
$empty_str = '';
$space_str = ' ';
$null_str = 'NULL';
$empty_array = [];
$array = ['a', 'b', 'c'];
$object = new stdClass();


// 1. is_null() で変数が Null かどうか調べる

// is_null($変数) => nullだったら true

function Is_Null_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (is_null($target)) {
        echo "{$output} は、nullです" ."\n";
    } else {
        echo "{$output} は、nullではありません" ."\n";
    }
};

Is_Null_Judgment($null_value);

Is_Null_Judgment($zero);
Is_Null_Judgment($number);
Is_Null_Judgment($double);
Is_Null_Judgment($robotama);
Is_Null_Judgment($str_zero);

Is_Null_Judgment($str_num);
Is_Null_Judgment($empty_str);
Is_Null_Judgment($space_str);
Is_Null_Judgment($null_str);

Is_Null_Judgment($empty_array);
Is_Null_Judgment($array);
Is_Null_Judgment($object);

echo 'Is_Null_Judgment ------------------------------------' . "\n";

// null は、nullです
// 0 は、nullではありません
// 1 は、nullではありません
// 0 は、nullではありません
// "ロボ玉" は、nullではありません
// "0" は、nullではありません
// "1" は、nullではありません
// "" は、nullではありません
// " " は、nullではありません
// "NULL" は、nullではありません
// [] は、nullではありません
// ["a","b","c"] は、nullではありません
// {} は、nullではありません
// Is_Null_Judgment ------------------------------------


// 2. empty() で変数かどうか調べる

// empty($変数) => 空だったら true

function Empty_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (empty($target)) {
        echo "{$output} は、空です" ."\n";
    } else {
        echo "{$output} は、空ではありません" ."\n";
    }
}

Empty_Judgment($null_value);
Empty_Judgment($zero);
Empty_Judgment($number);

Empty_Judgment($double);
Empty_Judgment($robotama);
Empty_Judgment($str_zero);

Empty_Judgment($str_num);
Empty_Judgment($empty_str);
Empty_Judgment($space_str);

Empty_Judgment($null_str);
Empty_Judgment($empty_array);
Empty_Judgment($array);
Empty_Judgment($object);

echo 'Empty_Judgment ------------------------------------' . "\n";

// null は、空です
// 0 は、空です
// 1 は、空ではありません
// 0 は、空です
// "ロボ玉" は、空ではありません
// "0" は、空です
// "1" は、空ではありません
// "" は、空です
// " " は、空ではありません
// "NULL" は、空ではありません
// [] は、空です
// ["a","b","c"] は、空ではありません
// {} は、空ではありません



// Empty_Judgment ------------------------------------


// 1. isset() で変数が Nullではないかどうかを調べる
// 「 null以外の値は、true / nullならfalse 」 => is_null()の逆

// 変数の値が Setされている、またはNullではないことを確認するには、isset() を使用します。

// isset() は、Null以外であれば戻り値に trueを返します。

function IsSet_Judgment ($target) {
    $output = json_encode($target, JSON_UNESCAPED_UNICODE);
    if (isset($target)) {
        echo "{$output} は、nullではありません" ."\n";
    } else {
        echo "{$output} は、nullです" ."\n";
    }
}

IsSet_Judgment($null_value);

IsSet_Judgment($zero);
IsSet_Judgment($number);
IsSet_Judgment($double);

IsSet_Judgment($robotama);
IsSet_Judgment($str_zero);
IsSet_Judgment($str_num);
IsSet_Judgment($empty_str);
IsSet_Judgment($space_str);
IsSet_Judgment($null_str);

IsSet_Judgment($empty_array);
IsSet_Judgment($array);
IsSet_Judgment($object);

echo 'IsSet_Judgment ------------------------------------' . "\n";


// null は、nullです
// 0 は、nullではありません
// 1 は、nullではありません
// 0 は、nullではありません
// "ロボ玉" は、nullではありません
// "0" は、nullではありません
// "1" は、nullではありません
// "" は、nullではありません
// " " は、nullではありません
// "NULL" は、nullではありません
// [] は、nullではありません
// ["a","b","c"] は、nullではありません
// {} は、nullではありません
// IsSet_Judgment ------------------------------------


class Robotama {
    public $name = 'ロボ玉';
    public $like = 'ひまたね';
    public $from = 'グンマー帝国';
    public $cost = null;
}

// Object(Class)は、new でインスタンス化(実体化)する
$robotama = new Robotama;


function KeyNullChecker ($object, $key) {
    if (isset($object->$key)) {
        echo "{$key}は、{$object->$key}" . "\n";
    } else {
        echo "{$key}は、nullな値です" . "\n";
    }
}

KeyNullChecker($robotama, "name");
KeyNullChecker($robotama, "like");
KeyNullChecker($robotama, "from");
KeyNullChecker($robotama, "cost");

// nameは、ロボ玉
// likeは、ひまたね
// fromは、グンマー帝国
// costは、nullな値です

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. 【PHP入門】NULL判定をする方法まとめ!3つの関数の結果を比べる
  2. PHP-Manual: is_null
  3. PHP-Manual: empty
  4. PHP-Manual: isset

最近の投稿