[PHP] 配列(Array)操作時のNotice: Undefined offset
2 min read
ある配列をループで回してたらこんなエラーがでました。
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 です。