isset()
を使うと、ある変数に何らかの値がセットされている(かつ null
でない)かを確認することができます。
変数の値が null
の場合は false
を返しますが、空文字がセットされている場合には true
を返すので注意してください。
<?php
$a = 'Hello';
$b = '';
$c = null;
var_dump(isset($a)); // => bool(true)
var_dump(isset($b)); // => bool(true) 空文字の場合は true
var_dump(isset($c)); // => bool(false) null の場合は false
var_dump(isset($d)); // => bool(false) 未定義の場合は false
isset()
は関数ではなく、言語構文として組み込まれているため、上記の isset($d)
のように未定義の変数を参照しようとしても警告は発生しないようになっています。
複数の変数をまとめて指定すれば、すべての変数がセットされているかどうかを一度に確認することができます。
if (isset($a, $b, $c)) {
// $a、$b、$c がすべてセットされている場合のみ実行される
}
サーバサイドのプログラムでは、GET リクエストや POST リクエストのパラメータが設定されているかどうかを調べるために使用できます。
if (isset($_GET['message'][0])) {
// ...
}
上記のように、一文字目を取り出して isset()
で確認しているのは、確実に message
という名前のフォーム要素に対して入力があったかどうかを判別するためです。
下記のようにすると、message
という名前のフォーム要素がある場合に、必ず isset()
が true
を返してしまいます。
if (isset($_GET['message'])) {
// ...
}