Code Fix

初級

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として扱われます。

直し方: 51 にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン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です。

直し方: 102 にします。

この問題を解いてみる →

よくある誤解

「存在しない添字にアクセスすればエラーで止まるはず」という他言語の感覚は通用しません。PHPはWarningを出すだけで処理を続けるため、nullが後続の計算に静かに紛れ込みます。

まとめ

Warning: Undefined array keyは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)