[英]PHP: merge elements of an array based on specific key & value
為此,我嘗試了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
人數相同的元素,並根據type
將totaltime
元素添加到新鍵中。 這就是我的意思。
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.