我有一个有效的代码,但是我想知道是否有更好的方法可以执行相同的操作。我尝试了一些php数组函数,但未成功,也许我使用了错误的方法。
$object1 = new stdClass;
$object1->name = 'John Doe';
$object1->token = 123;
$object2 = new stdClass;
$object2->name = 'Mary Doe';
$object2->token = 123;
$data = array(
$object1,
$object2
);
foreach ($data as $key => $value)
{
$new_array[$value->token][] = $value;
}
var_dump($new_array);die;
这段代码正好满足了我的需要,它是一个由标记属性索引的新数组,但是由于某种原因,这段代码似乎没有编写。我该怎么做更好?
修改 我想在没有foreach的情况下获得相同的输出,也许使用一些数组函数形式的php。
答案 0 :(得分:1)
$fancyArray = array_reduce($data, function($carry, $value) {
$carry[$value->token][] = $value;
return $carry;
});
var_dump($fancyArray);