2013-05-07 38 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