題例:
$gameStatistics = [
["game"=>'aaa',"gameid"=>'100',"num"=>3],
["game"=>'bbb',"gameid"=>'222',"num"=>92],
["game"=>'ccc',"gameid"=>'333',"num"=>3],
["game"=>'aaa',"gameid"=>'100',"num"=>3],
["game"=>'bbb',"gameid"=>'222',"num"=>15],
["game"=>'ccc',"gameid"=>'333',"num"=>33],
["game"=>'aaa',"gameid"=>'100',"num"=>33],
["game"=>'bbb',"gameid"=>'222',"num"=>133],
["game"=>'ccc',"gameid"=>'333',"num"=>38],
["game"=>'fff',"gameid"=>'444',"num"=>77],
["game"=>'aaa',"gameid"=>'100',"num"=>37],
["game"=>'bbb',"gameid"=>'222',"num"=>193],
["game"=>'ccc',"gameid"=>'333',"num"=>31],
//省略更多......
];
最後的結果應該為:
$result = [
["game"=>'aaa',"gameid"=>'100',"num"=>???],
["game"=>'bbb',"gameid"=>'222',"num"=>???],
["game"=>'ccc',"gameid"=>'333',"num"=>???],
["game"=>'fff',"gameid"=>'444',"num"=>???],
];
請用代碼算出???的結果。
計算過程:
//$gameStatistics是個二維數組,$statistic是$gameStatistics的一維數組,$statistic參考值如下:
//array(3) {
// ["game"] => string(12) "綦江麻将"
// ["gameid"] => string(3) "520"
// ["num"] => int(3)
//}
//将不重複資料儲存到變量
$tmp_name_arr1 = [];
foreach ($gameStatistics as $statistic){
if(empty($tmp_name_arr1[$statistic['gameid']])){
$tmp_data = [
'gameid'=>$statistic['gameid'],
'num'=>$statistic['num'],
'game'=>$statistic['game'],
];
$tmp_name_arr1[$statistic['gameid']] = $tmp_data;
}
}
//$tmp_name_arr1
//array(3) {
// [100] => array(3) {
// ["gameid"] => string(3) "100"
// ["num"] => int(1)
// ["game"] => string(12) "血戰到底"
// }
// [520] => array(3) {
// ["gameid"] => string(3) "520"
// ["num"] => int(1)
// ["game"] => string(12) "綦江麻将"
// }
// [411] => array(3) {
// ["gameid"] => string(3) "411"
// ["num"] => int(2)
// ["game"] => string(15) "綦江跑得快"
// }
//}
//再計算num值
foreach ($tmp_name_arr1 as $key_id=>&$arr1){
foreach ($gameStatistics as $stat1){
if($stat1['gameid'] == $key_id){
$arr1['num'] += $stat1['num'];
}
}
}
unset($arr1);//删除引用
var_dump($tmp_name_arr1);
有興趣的朋友可以試試其它算法。
以上由自己思考得出方法,還有改進空間,還有工作要做,後續再改進......
END