isset

(PHP 4, PHP 5, PHP 7, PHP 8)

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

説明

isset(mixed$var, mixed...$vars): bool

変数がセットされているかを調べます。 これは変数が宣言されており、 null とは異なる値だということです。

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

null が代入されている変数をチェックしたときは、 isset()false を返します。 null文字 ("\0") は PHP の null 定数とは異なることにも注意してください。

複数のパラメータが渡された場合は、 isset() は全てのパラメータがセットされている場合にだけ true を返します。 評価は左から右へと行われ、セットされていない値に出会うとすぐに評価が止まります。

パラメータ

var

調べたい変数。

vars

別の変数。

戻り値

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

例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
$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']));
?>

上の例の出力は以下となります。

bool(false) bool(true) bool(true) bool(true) bool(false) bool(false)

注意

警告

isset() は何らかの値が渡された 変数の場合のみ動作します。そうでない場合、パースエラーとなります。 もし 定数 が設定されているかどうかをチェックする場合は、 defined() を使用してください。

注意: これは、関数ではなく 言語構造のため、可変関数名前付き引数 を用いてコールすることはできません。

注意:

オブジェクトのアクセス不能なプロパティに対して isset() を使用した場合は、もしオーバーロードメソッド __isset() が宣言されていればそれをコールします。

参考

To Top