多维数组求和和排序

时间:2013-05-07 01:58:56

标签: php multidimensional-array

$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',然后将它们排序

//前。我希望实现的输出是一个数组:

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

1 个答案:

答案 0 :(得分: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);

Demo

另请参阅:array_reduce() arsort()

<强>更新

当您在different versions of PHP中查看此代码时,您会看到一些疯狂的结果。