まくまくPHPノート
変数がセットされているか調べる (isset)
2012-12-24

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'])) {
    // ...
}
2012-12-24