Warning: Undefined array key の原因と直し方
配列に存在しない添字でアクセスするとWarningが出ますが、プログラムは停止せず、その値はnullとして扱われます。
なぜエラーが出ないのか
Warning: Undefined array key 5 in main.php on line 3
main.php- ファイル名
3- 行番号
Warning- 種別 — 実行は止まりません。メッセージが出力に混ざるだけです
Undefined array key 5- 内容 — 何が起きたか
このエラーが出る典型パターン
パターン1
1 <?php 2 $fruits = ["apple", "banana", "cherry"]; 3 echo $fruits[5 ]; ^
Warning: Undefined array key 5 in main.php on line 3出力に混ざるだけで実行は止まりません(期待: banana)
3個の配列に添字5の要素はありません。PHPは例外にせずWarningを出すだけで、値はnullとして扱われます。
直し方: 5 を 1 にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 $user = ["name" => "Al", "age" => 20]; 3 echo $user["email"]; ^
Warning: Undefined array key "email" in main.php on line 3出力に混ざるだけで実行は止まりません(期待: Al)
連想配列にemailというキーはありません。存在しない文字列キーでもWarning止まりで実行は続きます。
直し方: "email" を "name" にします。
パターン3
1 <?php 2 $scores = [10, 20, 30]; 3 echo $scores[10]; ^
Warning: Undefined array key 10 in main.php on line 3出力に混ざるだけで実行は止まりません(期待: 30)
3個の配列に添字10の要素はありません。最後の要素の添字は2です。
直し方: 10 を 2 にします。
よくある誤解
「存在しない添字にアクセスすればエラーで止まるはず」という他言語の感覚は通用しません。PHPはWarningを出すだけで処理を続けるため、nullが後続の計算に静かに紛れ込みます。
まとめ
Warning: Undefined array keyは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。