Notice: Undefined index / Undefined variable について

よく見るけど放置していたエラーに関するチケットだったので簡単にまとめてみます。

Notice: Undefined index ▶ 定義されていない配列の要素を使用した場合に発生。

Notice: Undefined variable ▶ 定義されていない変数を使用した場合に発生。

単純な入力ミスでも発生することがあります。

このエラーは望ましくないコードに対して発生するものなのでプログラム自体は動作します。 エラーを非表示にするという対応も可能ですが、それよりはそのようなエラーが発生しないコードを書くことが望ましいです。

・対処法

「Notice: Undefined variable」は変数を最初に初期化して解決


var x = var y; // Notice: Undefined variableが発生。

var y = NULL;

var x = var y;

初出の変数はNULLなどで初期化してから使用することでエラーを回避することが出来ます。 上の例では未定義の変数を代入しようとしているのでエラーが発生します。

「Notice: Undefined index」はindexの有無を確認する処理を入れて解決

最初に該当のindexが存在するかを確認し、存在しない場合の処理を記述します。

if ( $_POST['name'] == "" ){
  echo '名前を入力してください';

} //リクエストにnameフィールドが含まれていないとNotice undefined indexが出る

if ( !isset($_POST['name']) || $_POST['name'] == "" ){

  echo '名前を入力してください';

} //Notice undefined indexは出ない

このように変数がセットされていない時の処理も記述することがエラーを回避できます。