2013-05-07 37 views
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), 

); 

//我希望做的是循环遍历这个数组,并添加所有的“价格”的每个 //唯一键“果”,然后再把它们排序多维数组之和排序

//前我希望实现的输出将是一个数组,例如:

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

回答

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中查看此代码时,您会看到一些疯狂的结果。

+0

杰克,感谢 “解析错误:语法错误,意想不到T_FUNCTION” \t $库存=阵列( 阵列( “水果”=> “橙”, “价格”=> 3), 阵列(“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 (“水果”=>“香蕉”,“价格”=> 10), 数组(“水果”=>“香蕉”,“价格”=> 10), ); $分组= array_reduce($库存,功能($结果,$项目){ \t @ $结果[$项[ '水果']] + = $项[ '价格']; \t返回$结果; },array()); – CanadaPHP 2013-05-07 02:19:26

+0

@CanadaPHP更新了使用旧版本php的答案。 – 2013-05-07 02:25:30

+0

@CanadaPHP你是什么意思*没有*你重写?重写什么? – 2013-05-07 02:26:50