鍍金池/ 問答/PHP/ 一個數(shù)組計算問題

一個數(shù)組計算問題

$userlist = [                
                ['name'=>'zhang','money'=>10, 'level'=>1],
                ['name'=>'wang', 'money'=>20, 'level'=>2],
                ['name'=>'li',   'money'=>10, 'level'=>3],
                ['name'=>'zhao', 'money'=>30, 'level'=>3],
                ['name'=>'wu',   'money'=>20, 'level'=>5]
            ];

怎么按level分組統(tǒng)計出,money的值,順序輸出來。

level相同的,money累加起來。例如level=3的,money=10+30=40,userlist數(shù)組長度未知。

回答
編輯回答
背叛者

這種問題不用考慮那么多吧, 用個foreach就好了如: @CrazyCodes 的就好.
或者考慮用array_reduce.

$result = array_reduce($userlist, function($res, $item){
        $res[$item['level']] += $item['money'];
        return $res;
}, []);
2018年4月25日 03:48
編輯回答
巫婆
    $level = [];
    
    foreach ($userlist as $value) {
        $level[$value['level']] += $value['money'];
    }
    
    var_dump ($level);

結(jié)果

array(4) {
  [1] =>
  int(10)
  [2] =>
  int(20)
  [3] =>
  int(40)
  [5] =>
  int(20)
}
2018年1月27日 17:28
編輯回答
愛是癌
$userlist = [                
                ['name'=>'zhang','money'=>10, 'level'=>1],
                ['name'=>'wang', 'money'=>20, 'level'=>2],
                ['name'=>'li',   'money'=>10, 'level'=>3],
                ['name'=>'zhao', 'money'=>30, 'level'=>3],
                ['name'=>'wu',   'money'=>20, 'level'=>5]
            ];


function groupby($array, $groupby_key, $sum_key){
    $res = array();
    foreach($array as $data) {
        if(!array_key_exists($data[$groupby_key], $res))
            $res[ $data[$groupby_key] ] = 0;
        $res[ $data[$groupby_key] ] += $data[$sum_key];
    }
    return $res;
}


$res = groupby($userlist, 'level', 'money');
var_dump($res);

將會輸出

array(4) {   
  [1]=>      
  int(10)    
  [2]=>      
  int(20)    
  [3]=>      
  int(40)    
  [5]=>      
  int(20)    
}            
2017年5月21日 21:07