[PHP] 配列(Array)操作時のNotice: Undefined offset

ある配列をループで回してたらこんなエラーがでました。

Notice:  Undefined offset: 1 in hoge.php on line 269

指定された添え字がおかしいって事なんだろうけど、1で引っかかるのは明らかにおかしい…。

原因はarray_unique()

とにかく、配列をprint_r()してみることに。

Array(
	[0]  => 0010522
	[29] => 0020173
	[30] => 0020181
	[31] => 0020231
	[32] => 0020242
	[33] => 0020252
	[34] => 0020284
	 .
	 .
	 .
)

見事に添え字が飛んでます。
飛んでる値を見るに重複分を消すために使ったarray_unique()が原因だと思われます。

解決方法

どうしても添え字は飛ばないようにしたいですし、array_unique()を使わないで添え字を飛ばさず実装するのはめんどいです。

添え字を埋める方法をGoogle先生に聞いたところarray_values()を使えばいいとのこと!
PHP: array_values – Manual

// 1.重複を削除したら…
$array = array_unique($array);
// 2.添え字を振りなおす!
$array = array_values($array);

こんな感じでOKです。