フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHPエラー】Warning: Undefined array key…の解決方法

PHP
Warning
エラー
トラブルシューティング
プログラミング

PHPでプログラムを作っていると突然表示されるエラー文章。突然エラーが表示されると焦ってしまいますよね。
この記事ではWarning: Undefined array key...というPHPでプログラムを作っているとよく発生するエラーについて原因と、解決方法をご紹介します。

Warning: Undefined array key…とは

早速ですが、このエラーについて、実際にどのように表示されるのか見ていきましょう。

Warning: Undefined array key ●● in ▲▲ on line ■■

Warning: Undefined array keyはこのように表示されます。
●●、▲▲、■■はそれぞれ以下のような点を教えてくれています。

  • ●●:存在しないキー名
  • ▲▲:存在しないキー名を宣言・使用している「ディレクトリ名/ファイル名」
  • ■■:エラーの原因となる●●が書かれている行数

具体的には「▲▲ファイルの■■行目に存在しない●●というキー名が宣言されているよ」というエラー内容です。

エラーが表示される原因・具体例

このWarning: Undefined array key...というエラーは存在しないキーを参照しよとした時に表示されるものです。存在しないキーは参照することが出来ません。
このような時に表示されるエラーがWarning: Undefined array keyです。

<?php
    echo $_GET['name'];
    // GET値にnameが無ければWarning: Undefined array key...が表示されます
?>

Warning: Undefined array key…の解決方法

上で書いた通りWarning: Undefined array key...エラーは存在しないキーを参照しているため表示さるものなので、キーを参照する前に参照しようとしているキーが存在するかどうかチェックをして、キーが存在する場合のみ実行されるようにプログラムを変更することで解決します。

具体的には、以下のようにキーが存在するかチェックする処理を追加します。

<?php
if( isset($_GET['name']) ) {
    echo $_GET['name'];
}
?>

たったこれだけの変更です。

isset()関数は引数に指定した変数に値がセットされているかを確認するものです。
isset()関数を使って$_GET['XXX']で取得した変数に値がセットされているかを値がセットされている場合のみ処理を実行します。

以前は表示されなかった場合

ずっと同じ環境でWEBサイトを運用していたけど、以前はこんなエラー表示されなかった。という方もいるかもしれません。

このエラーはPHPのバージョンを8.0以降に変更した場合に表示されます。PHP8.0以前は誤った記述でもPHPが頑張って動作してくれていましたが、PHP8.0以降はより記述や文法が厳密化され、ちょっとした記述ミスでもエラー表示されるようになった印象です。

このように以前は表示されなかった文法エラーが表示されるようになっています。

今回ご紹介したWarning: Undefined array key...以外にもPHPのバージョンをアップした際に起こるエラーはいくつかあります。このブログでもご紹介していますので表示されているPHPエラーがあれば合わせて確認してみて下さい。

その他PHPで起こるエラーについて

このサイトでは他にもPHPで起こるエラーの解決方法をいろいろご紹介しています。もし、発生しているエラーがあれば合わせて確認してみて下さい。

まとめ

いかがでしたか?
PHPは少しくらい間違っていても動作してくれる優秀なプログラミング言語です。
そのため、実際は記述が間違っているのに知らず知らずのうちに間違った記述のままずっと書いているという人も多いと思います。
そのため、今まではよかったけどPHPのバージョンが変わったタイミングでこのようにエラーが表示されることがよくあります。

正しく動作するなら問題ないという気持ちもわかりますが、いつかPHPの記述が厳密化した際、自分が作ったWEBサイト、WEBシステムが一斉に動作しなくなるということも考えられます。
そのため出来る限り正しい記述を心掛けたいですね。