[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です。