【isset関数/@マーク】PHPの未定義エラーを回避する方法【現役SE解説】

PROGRAM

今回は、PHPの未定義エラーを回避する方法について、isset関数と@マークで回避する方法に分け、簡単に解説していきます。

isset関数で未定義エラーを回避する方法

PHPを使っているとよく”Undefined variable”という未定義エラーに遭遇すると思います。

そんなときには、以下のサンプルコードのように、isset関数でまず定義の確認をされると良いでしょう。

if (isset($hoge)) {
    echo "$hogeは定義されています。";
} else {
    echo "$hogeは定義されていません。";
}

上記のサンプルコードでは、isset関数の引数の$hogeという変数が定義されていれば、isset関数はtrueを返します。

@マークで未定義エラーを回避する方法

全ての変数に対し、いちいちisset関数で確認することを億劫と思う方は多いでしょう。

そこで、PHPでは@マークという便利なものがあり、これを変数の頭に付けることで未定義エラーを回避できます。

$hoge = @$hoge; // 未定義の場合は""になる。

上記のサンプルコードでは、@マークを付けて未定義エラーを回避していますが、未定義の場合には””が代入されることになります。

isset関数や@マークは配列にも有効

isset関数や@マークによる未定義エラー回避は配列にも有効です。

if (!isset($_POST['name'])) {
    echo "nameが定義されていません。";
}

よくある定義確認は上記のコードのようにGETやPOSTされたフォームデータの確認です。

$name = @$_POST['name'];

定義されていない場合は””として処理を進めたい場合には、上記のように@マークだけで済まされることもよくあります。