(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)