需要处理的数组
Array ( [0] => Array ( [uid] => 1 [price] => 85.00 [earnings] => 40.00 ) [1] => Array ( [uid] => 8 [price] => 56.00 [earnings] => 31.00 ) [2] => Array ( [uid] => 15 [price] => 56.00 [earnings] => 31.00 ) [3] => Array ( [uid] => 15 [price] => 56.00 [earnings] => 31.00 ) [4] => Array ( [uid] => 21 [price] => 180.00 [earnings] => 85.00 ) [5] => Array ( [uid] => 21 [price] => 60.00 [earnings] => 35.00 ) [6] => Array ( [uid] => 231 [price] => 60.00 [earnings] => 35.00 ) )
公共方法
/*************** * @function 二维数组中子数组的某一键相等,其余键值求和 * @Param: * $array : 传入参数 * $mainKey : 指定键 * $otherKey : 需要求和的键,一维数组 * $num : 需要求和的键的数量 * @Return: $tempArr 返回结果数组 ***************/ function array2_key_sum($array,$mainKey,$otherKey,$num){ $item=array(); foreach($array as $k=>$v){ if(!isset($item[$v[$mainKey]])){ $item[$v[$mainKey]]=$v; }else{ for ($i = 0;$i < $num;$i++){ $item[$v[$mainKey]][$otherKey[$i]]+=$v[$otherKey[$i]]; } } } return $item; }
调用公共方法
$orderTotal = array2_key_sum($orderTotal,'uid',array('price','earnings'),2);
处理后的数组
Array ( [1] => Array ( [uid] => 1 [price] => 85.00 [earnings] => 40.00 ) [8] => Array ( [uid] => 8 [price] => 56.00 [earnings] => 31.00 ) [15] => Array ( [uid] => 15 [price] => 168 [earnings] => 62 ) [21] => Array ( [uid] => 21 [price] => 300 [earnings] => 120 ) [231] => Array ( [uid] => 231 [price] => 60.00 [earnings] => 35.00 ) )
备注:
1、 如果需要处理的数组有空值,则用
$orderWeek = array_filter($orderWeek);
2、 如果想要给所得数组的键从0开始
$orderWeek = array_values($orderWeek);