我有一个多维数组。我需要使用相同的“驱动程序”和“日期”键总结距离值
Input :
$firstArr = array(
0 =>array('driver'=>'xxxx',
'distance' => 100,
'vehicle' => 1,
'date' => '2019-10'),
1=>array('driver'=>'xxxx',
'distance' => 200,
'vehicle' => 2,
'date' => '2019-10'),
2=>array('driver'=>'yyyy',
'distance' => 100,
'vehicle' => 3,
'date' => '2019-10'));
预期输出:
$finalArr = array(
0 =>array('driver'=>'xxxx',
'distance' => 300,
'vehicle' => '1,2',
'date' => '2019-10'),
1=>array('driver'=>'yyyy',
'distance' => 100,
'vehicle' => 3,
'date' => '2019-10'));
我尝试了以下代码。但是输出是按日期排列的数组。
$subArr = array();
foreach($firstArr as $key => $val){
$subArr[$val['driver']][$val['date']]['distance'] += $val['distance'];
$subArr[$val['driver']][$val['date']]['vehicle'] .= $val['vehicle'].',';
$subArr[$val['driver']][$val['date']]['date'] = $val['date'];
$subArr[$val['driver']][$val['date']]['driver'] = $val['driver'];
}
$result = array_values($subArr);
dirver
和date
作为键,$result = [];
foreach($array as $v){
$key = $v["dirver"] . "_" . $v["date"];
if(isset($result[$key])){
$result[$key] += $v["distance"];
}else{
$result[$key] = $v;
}
}
$finalArray= array();
foreach($firstArr as $arr){
if(!isset($finalArray[$arr['driver']])){
$finalArray[$arr['driver']] = $arr;
}else{
$finalArray[$arr['driver']]['distance']= $finalArray[$arr['driver']]['distance']+$arr['distance'];
$finalArray[$arr['driver']]['vehicle']= $finalArray[$arr['driver']]['vehicle'].','.$arr['vehicle'];
}
}
print_r(array_values($finalArray));
输出:-https://3v4l.org/S8hdn