変数の値のチェックは、プログラムの誤動作を防止するためには非常に重要な処理です。
PHPでは、isset, empty, is_null, array_key_existsなどの関数を使用して、 値のチェックを行うことができます。
ですが、これらの関数の挙動は微妙に異なっているため、使用する際には少し注意が必要です。
[php]
$data = array(
‘A’ => 1,
‘B’ => 0,
‘C’ => ‘0’,
‘D’ => ”,
‘E’ => array(),
‘F’ => FALSE,
‘G’ => NULL,
);
[/php]
上の配列$dataに含まれる7つの値に対して、上記4つの関数で判定を行った結果を示します。
また、この配列に存在しないキー’X’の場合の結果も併記します。
isset
issetは、変数がセットされているかどうかを判定しますが、
変数がセットされていてもその値がNULLの場合(G)はFALSEを返します。
[php]
echo isset($data[‘A’]) ? "Yes" : "No"; // Yes
echo isset($data[‘B’]) ? "Yes" : "No"; // Yes
echo isset($data[‘C’]) ? "Yes" : "No"; // Yes
echo isset($data[‘D’]) ? "Yes" : "No"; // Yes
echo isset($data[‘E’]) ? "Yes" : "No"; // Yes
echo isset($data[‘F’]) ? "Yes" : "No"; // Yes
echo isset($data[‘G’]) ? "Yes" : "No"; // No
echo isset($data[‘X’]) ? "Yes" : "No"; // No
[/php]
empty
emptyは、変数が空であるかどうかを判定します。
数値の0や文字列の’0’、空の配列もTRUEと判定されます。
[php]
echo empty($data[‘A’]) ? "Yes" : "No"; // No
echo empty($data[‘B’]) ? "Yes" : "No"; // Yes
echo empty($data[‘C’]) ? "Yes" : "No"; // Yes
echo empty($data[‘D’]) ? "Yes" : "No"; // Yes
echo empty($data[‘E’]) ? "Yes" : "No"; // Yes
echo empty($data[‘F’]) ? "Yes" : "No"; // Yes
echo empty($data[‘G’]) ? "Yes" : "No"; // Yes
echo empty($data[‘X’]) ? "Yes" : "No"; // Yes
[/php]
is_null
is_nullは、変数がNULLかどうかを判定します。
変数がセットされていない場合(X)もTRUEと判定されます。
[php]
echo is_null($data[‘A’]) ? "Yes" : "No"; // No
echo is_null($data[‘B’]) ? "Yes" : "No"; // No
echo is_null($data[‘C’]) ? "Yes" : "No"; // No
echo is_null($data[‘D’]) ? "Yes" : "No"; // No
echo is_null($data[‘E’]) ? "Yes" : "No"; // No
echo is_null($data[‘F’]) ? "Yes" : "No"; // No
echo is_null($data[‘G’]) ? "Yes" : "No"; // Yes
echo is_null($data[‘X’]) ? "Yes" : "No"; // Yes
[/php]
array_key_exists
array_key_existsは、指定したキーが配列に存在するかどうかを判定します。
issetとよく似ていますが、こちらは値がNULLの場合(G)でもTRUEと判定されます。
[php]
echo array_key_exists(‘A’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘B’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘C’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘D’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘E’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘F’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘G’, $data) ? "Yes" : "No"; // Yes
echo array_key_exists(‘X’, $data) ? "Yes" : "No"; // No
[/php]