Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. isset() / empty() / is_null()

isset() / empty() / is_null()対応: PHP 4(2000)

変数が定義されているか、値が空でないかを判定する関数です。フォーム入力のバリデーションや、配列キーの存在確認など幅広い場面で使用されます。

構文
// 変数がセットされていて null でないことを確認します。
isset($var, $var2, ...);

// 変数が空であるかを確認します。
empty($var);

// 変数が null であるかを確認します。
is_null($var);

// 変数を破棄します。
unset($var, $var2, ...);
関数一覧
関数概要
isset($var, ...)変数がセットされていて、かつ値が『null』でない場合に『true』を返します。複数の変数を指定でき、すべてがセットされている場合のみ『true』になります。
empty($var)変数が空であるかを判定します。未定義・『null』・『false』・『0』・『""』・『"0"』・空配列が空と判定されます。
is_null($var)変数が『null』であるかを判定します。未定義の変数に使用すると警告が発生します。
unset($var, ...)指定した変数を破棄します。複数の変数を同時に指定できます。
empty() が true を返す値
empty() の結果
nulltrue
falsetrue
0true
0.0true
""true
"0"true
[]true
未定義の変数true
サンプルコード
<?php
// isset() で変数の存在を確認します。
$name = "山田太郎";
var_dump(isset($name)); // 『bool(true)』と出力されます。
var_dump(isset($undefined)); // 未定義のため『bool(false)』と出力されます。

// null の変数は isset() で false になります。
$value = null;
var_dump(isset($value)); // 『bool(false)』と出力されます。

// 複数の変数を同時に確認できます。
$a = 1;
$b = 2;
var_dump(isset($a, $b)); // すべてセット済みのため『bool(true)』と出力されます。

// empty() で空かどうかを判定します。
var_dump(empty("")); // 『bool(true)』と出力されます。
var_dump(empty("0")); // 文字列の『"0"』も空と判定されます。
var_dump(empty("abc")); // 『bool(false)』と出力されます。

// フォーム入力の確認でよく使われるパターンです。
$_POST['email'] = "user@example.com";
if (!empty($_POST['email'])) {
	echo "メールアドレスが入力されています。"; // こちらが出力されます。
}

// 配列のキー存在確認にも使えます。
$config = ['debug' => false, 'version' => '1.0'];
var_dump(isset($config['debug'])); // 『bool(true)』と出力されます。
var_dump(isset($config['author'])); // キーが存在しないため『bool(false)』と出力されます。

// unset() で変数を破棄します。
$temp = "一時データ";
unset($temp);
var_dump(isset($temp)); // 破棄済みのため『bool(false)』と出力されます。

// is_null() は null のみを判定します。
$val = null;
var_dump(is_null($val)); // 『bool(true)』と出力されます。
var_dump(is_null("")); // 空文字列は null ではないため『bool(false)』と出力されます。
概要

『isset()』は変数がセットされていて『null』でないことを確認し、『empty()』は変数が空であるかを判定します。『empty()』は『"0"』や『0』も空と判定するため、数値の入力チェックに使うと意図しない結果になることがあります。数値として有効かどうかを確認するには『is_numeric()』を使用してください。

『isset()』と『empty()』は言語構造のため、未定義の変数に対して使用しても警告が発生しません。一方、『is_null()』は通常の関数のため、未定義の変数に使用すると Warning が発生します。

フォームの入力値チェックでは isset($_POST['key']) でキーの存在を確認し、!empty($_POST['key']) で値が入力されているかを確認する組み合わせが一般的です。リクエストデータの取得については『$_GET / $_POST』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。