こんにちはフロントエンドエンジニアのまさにょんです!
今回は、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 : 評価する変数
[ 戻り値 ]
引用元: PHP-Manual: is_null
value
が null の場合にtrue
、 それ以外の場合にfalse
を返します。
<?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 への変換 を参照して下さい。
それ以外の場合は
引用元: PHP-Manual: emptyfalse
を返します。
<?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
$var
, mixed...$vars
): bool変数がセットされているかを調べます。
これは変数が宣言されており、
null
とは異なる値だということです。変数が、unset() により割当を解除された場合、 もはやセットされているとは見做されません。
null
が代入されている変数をチェックしたときは、 isset() はfalse
を返します。null文字 (
"\0"
) は PHP のnull
定数とは異なることにも注意してください。複数のパラメータが渡された場合は、 isset() は全てのパラメータがセットされている場合にだけ
true
を返します。評価は左から右へと行われ、セットされていない値に出会うとすぐに評価が止まります。
[ パラメータ ]
var : 調べたい変数。
vars : 別の変数。
[ 戻り値 ]
引用元: PHP-Manual: isset
var
が存在してnull
以外の値をとればtrue
、 そうでなければfalse
を返します。
<?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!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!