我有两个PHP数组。一个包含一个组名,另一个包含工资工资值。
$group_wages_array = Array ( [0] => 1 [1] => 4 [2] => 1 [3] => 3 );
这意味着计划中有四名员工。两个分配给组1,另一个分配给组4,最后一个分配给组3。
第二个数组如下:
$tot_wages_array = Array ( [0] => 500 [1] => 44 [2] => 80 [3] => 11.25 );
这是每个员工工资的示例数组。这两个数组都是按顺序构造的,因为它在mysql while循环中添加了值,因为它从数据库中提取信息。
稍后,我将两个数组合并为一个数组,其中键是组号,值是该组的总工资:
$combined_group_wages = array_combine($group_wages_array, $tot_wages_array);
当多个员工被分配到同一个组时,这就像一个魅力除外。这些数组是在mysql while循环中构建的,因为它循环遍历每个员工的信息:
array_push($tot_wages_array, $totemp_wages_sch); // Add their wage to the array
array_push($group_wages_array, $emp_data['group_id']); // Add their group to the array
我不需要将数据推送到数组,而是需要这样做...我知道英语,但我不知道如何编码:
如果$ emp_data ['group_id']作为$ group_wages_array中的值存在,则不向此数组添加任何内容,但获取密钥。将$ totemp_wages_sch添加到$ tot_wages_array其中key = group_wages_array key
我知道这听起来更像是一个SQL查询,但我必须按顺序保存键和值,以便以后可以在页面中组合它们。如果我可以正常工作,示例中显示的数组将是:
$group_wages_array = Array ( [0] => 1 [1] => 4 [2] => 3 );
$tot_wages_array = Array ( [0] => 580 [1] => 44 [2] => 11.25 );
$combined_group_wages = array_combine($group_wages_array, $tot_wages_array);
$combined_group_wages = Array ( [1] => 580 [4] => 44 [3] => 11.25 );
...我必须使用PHP来完成这项工作。有什么想法吗?
我想出了一个基于下面提交的两个答案组合的解决方案。这是它可以帮助某人:
if(in_array($emp_data['group_id'], $group_wages_array)){
$key = key($group_wages_array);
$tot_wages_array[$key] += $totemp_wages_sch;
} else {
array_push($group_wages_array, $emp_data['group_id']);
array_push($tot_wages_array, $totemp_wages_sch);
}
答案 0 :(得分:2)
应该这样做:
$group_wages_array = array(1, 4, 1, 3);
$tot_wages_array = array(500, 44, 80, 11.25);
$combined_group_wages = array();
for ($i=0; $i<count($group_wages_array); $i++) {
$group = $group_wages_array[$i];
if (array_key_exists($group_wages_array[$group], $combined_group_wages)) {
$combined_group_wages[$group] += $tot_wages_array[$i];
} else {
$combined_group_wages[$group] = $tot_wages_array[$i];
}
}
print_r($combined_group_wages);
收率:
Array
(
[1] => 580
[4] => 44
[3] => 11.25
)
但我建议您切换到使用对象来更好地表示您的数据。
答案 1 :(得分:1)
如果我能看到整个代码会有很多帮助,但这里的英文转换为php。向我展示更多代码,我可以完善它,直到那时尝试这个 - &gt;
if(in_array($emp_data['group_id'], $group_wages_array)){
$key = key($group_wages_array);
$tot_wages_array[$key] = $totemp_wages_sch;
} else {
array_push($group_wages_array, $emp_data['group_id']);
}