array_reduceについて
出来る事
配列の中の値を再帰的に処理する。
例
ちょっといけていない配列が定義されているとき。
明らかにid => nameの関係を担保できる配列である時に使える!
ソース
<?php $arr = array( 1 => array( 'id' => 10, 'name' => 'hoge' ), 2 => array( 'id' => 20, 'name' => 'fuga' ), ); // result 1 var_dump($arr); $result = array_reduce( $arr, function($v, $w){ $v[$w['id']] = $w['name']; return $v; } ); // result 2 var_dump($result);
結果
# result 1 array(2) { [1]=> array(2) { ["id"]=> int(10) ["name"]=> string(4) "hoge" } [2]=> array(2) { ["id"]=> int(20) ["name"]=> string(4) "fuga" } } # result 2 array(2) { [10]=> string(4) "hoge" [20]=> string(4) "fuga" }
これは便利!
補足
ただし、上のケースではラムダ関数を使っているのでPHP5.3からです。
あとforeachで書いたほうが短いです。
<?php $result = array(); foreach($arr as $val) { $result[$val['id']] = $val['name']; }