PHP | $_GETや$_POSTでのUndefined array keyエラーを解決する方法

PHP,PHP エラー

PHPではPHP8から$_GETや$_POSTでのパラメータ受け取りにて「Undefined array key」エラーが発生するようになっています。

この記事ではその原因と対処・修正案について紹介しています。

Warning: Undefined array key “xxx" in ~
警告:未定義の配列キー

$_GETや$_POSTでのUndefined array keyエラーの発生原因

$_GETや$_POSTでのパラメータ受け取りにて「Undefined array key」が発生する理由はPHPバージョンでのエラーレベルの変更によるものです。

PHP8からは未定義の配列キーを呼び出そうとすると「Undefined array key」が発生するようになりましたが、コード上で前もって定義しないケースが多い$_GETや$_POSTも同様にエラーが発生します。

このエラーは警告(Warning)に分類されています。

例えば、PHP8以降では以下のPHPコードだと「Undefined array key」エラーが発生します。

$_GET('xxx');

$_GETや$_POSTでのUndefined array keyエラーの解決策

$_GETや$_POSTでのパラメータ受け取りにて「Undefined array key」エラーが出ないようにする方法を紹介します。

filter_input()関数を利用する

filter_input()関数を利用してパラメータを受け取ることで「Undefined array key」エラーを回避する事が可能です。

$aaa = filter_input(INPUT_GET, 'xxx');
$bbb = filter_input(INPUT_POST, 'xxx');

isset()関数を利用する

isset()で変数がセットされているかを調べ「true」が返された場合のみ処理を実行するようにする方法も利用できます。

if(isset($_GET['xxx'])){
    $aaa = $_GET['xxx'];
}

if(isset($_POST['xxx'])){
    $bbb = $_POST['xxx'];
}

error_reporting()でエラーを表示しないようにする

すでに公開中のコンテンツで緊急的にエラー表示を回避したい場合などはerror_reporting()やini_set()で一時的にエラーを表示しないようにする方法もあります。

エラーが発生している場所より上に以下のコードを追加します。

// すべてのエラーを非表示にする
error_reporting(0);

// 警告(Warning)エラーのみ非表示にする
error_reporting(E_ERROR | E_PARSE | E_NOTICE);

特定のエラーのみ発生しないようにする方法があれば良いのですが、当方は知りません。

PHP,PHP エラー

Posted by Yousuke.U