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

B L O G

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

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

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

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'];
}
?>

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

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

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

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

以外にもPHPのバージョンをアップした際に起こるエラーはいくつかあります。このブログでもご紹介していますのでご自身のWEBサイトで表示されているエラーがあれば是非合わせて確認してみて下さい。

まとめ

いかがでしたか?

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

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