0
$inventory = array(

   array("fruit"=>"orange", "price"=>3),
   array("fruit"=>"kiwi", "price"=>2),
   array("fruit"=>"apple", "price"=>3),
   array("fruit"=>"apple", "price"=>3),
   array("fruit"=>"apple", "price"=>3),
   array("fruit"=>"orange", "price"=>3),
   array("fruit"=>"banana", "price"=>10),
   array("fruit"=>"banana", "price"=>10),

);

// 我想要做的是遍历这个数组并为每个唯一键'fruit'添加所有'prices',然后对它们进行排序

// 前任。我希望实现的输出将是这样的数组:

$sum_array = array("banana"=>"20", "apple"=>"9", "orange"=>"6", "kiwi"=>"2");
4

1 回答 1

1

好吧,只需将它们按水果分组,然后对最终结果进行排序:

function groupFruits(&$result, $item) 
{
    $key = $item['fruit'];
    @$result[$key] += $item['price'];

    return $result;
}

$grouped = array_reduce($inventory, 'groupFruits', array());

arsort($grouped);

print_r($grouped);

演示

也可以看看:array_reduce() arsort()

更新

当您在不同版本的 PHP中查看这段代码时,您会看到一些疯狂的结果。

于 2013-05-07T02:06:35.810 回答