Я пробовал около 20 различных идей для этого, и я думаю, что ушел во многие круги, я не могу вспомнить, с чего я начал. Я уверен, что это тоже просто.
У меня есть массив;
Array ( [0] => Array ( [employee] => 15 [first_name] => Person1 [surname] => Person1 [totaltime] => 183.75 [type] => 0 ) [1] => Array ( [employee] => 15 [first_name] => Person1 [surname] => Person1 [totaltime] => 64.50 [type] => 1 ) [2] => Array ( [employee] => 23 [first_name] => Person2 [surname] => Person2 [totaltime] => 2.00 [type] => 0 ) [3] => Array ( [employee] => 51 [first_name] => Person3 [surname] => Person3 [totaltime] => 119.25 [type] => 0 ) [4] => Array ( [employee] => 59 [first_name] => Person4 [surname] => Person4 [totaltime] => 170.75 [type] => 0 ) )
Мне нужно объединить элементы, где номер employee
одинаковый, и добавить элементы totaltime
к новым ключам в зависимости от type
. Это то, что я имею в виду.
Array ( [0] => Array ( [employee] => 15 [first_name] => Person1 [surname] => Person1 [totaltime_type_0] => 183.75 [totaltime_type_1] => 64.50 ) [1] => Array ( [employee] => 23 [first_name] => Person2 [surname] => Person2 [totaltime_type_0] => 2.00 [totaltime_type_1] => 0 ) [2] => Array ( [employee] => 51 [first_name] => Person3 [surname] => Person3 [totaltime_type_0] => 119.25 [totaltime_type_1] => 0 ) [3] => Array ( [employee] => 59 [first_name] => Person4 [surname] => Person4 [totaltime_type_0] => 170.75 [totaltime_type_1] => 0 ) )
Я мог бы сделать это на уровне запросов, но SQL для создания исходного массива настолько сложный, что я бы предпочел поддерживать только одну его версию.
Любые предложения по наилучшему подходу действительно помогут мне вернуться к следующему этапу. И будет ДЕЙСТВИТЕЛЬНО оценен.
Попробуй это :
$res = array(); foreach($your_array as $val){ $res[$val['employee']]['employee'] = $val['employee']; $res[$val['employee']]['first_name'] = $val['first_name']; $res[$val['employee']]['surname'] = $val['surname']; if($val['type'] == 0){ if(array_key_exists("totaltime_type_0",$res[$val['employee']])){ $res[$val['employee']]['totaltime_type_0'] += $val['totaltime']; } else{ $res[$val['employee']]['totaltime_type_0'] = $val['totaltime']; } } if($val['type'] == 1){ if(array_key_exists("totaltime_type_1",$res[$val['employee']])){ $res[$val['employee']]['totaltime_type_1'] += $val['totaltime']; } else{ $res[$val['employee']]['totaltime_type_1'] = $val['totaltime']; } } } echo "<pre>"; print_r(array_values($res));