(PHP 4, PHP 5, PHP 7)
isset — 変数がセットされていること、そして NULL
でないことを検査する
変数がセットされており、それが NULL
でないことを調べます。
変数が、unset() により割当を解除された場合、
何も値が設定されていない状態になります。
NULL
に設定されている変数を調べた場合、
isset() はFALSE
を返します。
null文字("\0")はPHPの定数
NULL
と等価ではないことにも注意してください。
複数のパラメータを渡した場合は、isset()
はそれらすべてがセットされている場合にのみ TRUE
を返します。
左から順に評価を行い、セットされていない変数があった時点で処理を終了します。
var
調べたい変数。
...
別の変数。
var
が存在して NULL
以外の値をとれば TRUE
、
そうでなければ FALSE
を返します。
バージョン | 説明 |
---|---|
5.4.0 |
文字列のオフセットに非数値を指定した場合は |
例1 isset() の例
<?php
$var = '';
// これは TRUE と評価されるので、テキストが出力される
if (isset($var)) {
echo "This var is set so I will print.";
}
// 次の例では、isset() の戻り値を出力するため var_dump を
// 使用している
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
この関数は配列の要素に対しても動作します:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// キー 'hello' は NULL と等しいのでセットされていないと見なされる。
// もし NULL なキー値に対してチェックを行いたい場合、次を試してみること:
var_dump(array_key_exists('hello', $a)); // TRUE
// 配列の深い要素の値のチェック
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
例2 文字列のオフセットに対する isset()
PHP 5.4 以降では、文字列内でのオフセット指定を渡したときの isset() の挙動が変わりました。
<?php
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>
上の例の PHP 5.3 での出力は、このようになります。
bool(true) bool(true) bool(true) bool(true) bool(true) bool(true)
上の例の PHP 5.4 での出力は、このようになります。
bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)