PHP

【対処法】Notice: Undefined offset: (キー)【PHP】

「Notice: Undefined offset: 」

今回は「Notice: Undefined offset: 」と出力される原因とその対処法について解説します。

「Notice: Undefined offset: 」のエラーの原因

「Notice: Undefined offset: 」は配列から未定義のインデックスの要素を取得しようとすると発生します。

以下のような場合に出力されます。

$array = array('apple','banana');
$sample = $array;

対処方法

こちらでいくつか対処方法を解説します。

存在するキーをきちんと指定する

このような場合は指定したキーがないので、ちゃんと存在するキーを指定する方にしましょう。

$array = array('apple','banana');
$sample = $array;
//$arrayで「banana」、[0]で「apple」が出力されます。

isset()を使用する

isset()を使用することによって、値が設定されていない場合はエラーを出力しないようにする

$array = array('apple','banana');
$sample = isset($array) ? $array : 'empty';

isset()とは

変数に値がセットされていてそれがNULLであるかどうかを調べる関数です。isset()では今回のような配列内のキーが存在しているかどうかも調べることができます。

 

array_key_exists()を使用する

array_key_exists()を使用し、未定義のインデックスの場合は取得しないようにする

$array = array('apple','banana');
$sample = array_key_exists(3, $array) ? $array : 'empty';

array_key_exists()とは

指定したキーまたは添字が配列にあるかどうかを調べることができます。指定したkeyが配列にセットされている場合、TRUE()を返します。

まとめ

配列に何が入っているか自分で把握していない場合は、var_dump等デバッグをしっかりと行うことも重要です。

基本を忠実にすることが、プログラム完成への近道です。