只是为了好奇(我知道它可以是单行foreach语句),是否有一些
PHP数组函数(或许多的组合)给出一个数组,如:
Array ( [0] => stdClass Object ( [id] => 12 [name] => Lorem [email] => lorem@example.org ) [1] => stdClass Object ( [id] => 34 [name] => Ipsum [email] => ipsum@example.org ) )
而且,给定“id”和“name”,产生如下:
Array ( [12] => Lorem [34] => Ipsum )
我使用这个模式很多,我注意到array_map在这种情况下是无用的,因为你不能指定返回数组的键.
只需使用
array_reduce
:
$obj1 = new stdClass; $obj1 -> id = 12; $obj1 -> name = 'Lorem'; $obj1 -> email = 'lorem@example.org'; $obj2 = new stdClass; $obj2 -> id = 34; $obj2 -> name = 'Ipsum'; $obj2 -> email = 'ipsum@example.org'; $reduced = array_reduce( // input array array($obj1,$obj2),// fold function function(&$result,$item){ // at each step,push name into $item->id position $result[$item->id] = $item->name; return $result; },// initial fold container [optional] array() );
这是一个单行的评论^^