array_filterで配列要素のインデックスが歯抜けになる
急遽、rubyで言うArray#selectをphpで実現する必要が出てきた。
さらさらっと調べてみると、PHP Manualにarray_filterなる、そのものズバリな関数を見つけることが出来た。
しかし、サンプルを観てみると、どうも評価値に違和感が。
$array2 = array(6, 7, 8, 9, 10, 11, 12);
に対して、偶数フィルタを通した評価値が、
Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
となっている。インデックスを見てみると、除外された部分が歯抜けになって返ってきている。print_rの表示からして、まさかphpの配列は全て連想配列なのか……?
要求上、こんな歯抜け配列は許されないので、何としても詰めた配列が欲しい。
とりあえず、マニュアルについたコメントを読み進めていくと、
You can easily reassign indexes like this:
http://www.php.net/manual/ja/function.array-filter.php#80219
そうそう、求めていたのはこれだよ、これ!
と言うか、マニュアルにそういう頻出しそうなノウハウは反映させようよ。ググっても、日本語資料では出てくる様子がないし……