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'];
}
広告を非表示にする