我在向数组中添加数据时遇到了一些问题。我的第一个数据有一些数据,如下面的代码:
array1
{projectId: 1, task: 1, hoursEstimated: 345},
{projectId: 1, task: 4, hoursEstimated: 274},
{projectId: 2, task: 1, hoursEstimated: 432},
{projectId: 2, task: 2, hoursEstimated: 347},
{projectId: 2, task: 4, hoursEstimated: 815},
array2
{projectId: 1, task: 1, totalHoursWorked: 145},
{projectId: 1, task: 2, totalHoursWorked: 234},
{projectId: 1, task: 3, totalHoursWorked: 283},
{projectId: 1, task: 4, totalHoursWorked: 174},
{projectId: 2, task: 1, totalHoursWorked: 205},
{projectId: 2, task: 2, totalHoursWorked: 153},
{projectId: 2, task: 3, totalHoursWorked: 634},
{projectId: 2, task: 4, totalHoursWorked: 815},
所以我想要做的是:array2必须做的是匹配数组1的taskId和projectId并附加数据。因此,对于de数组中的第一个元素,它将成为:
Array3
{projectId: 1, task: 1, hoursEstimated: 345, totalHoursWorked: 145}
etc..
答案 0 :(得分:1)
foreach($data1 as $key => &$value){
foreach($data2 as $k => $v){
if($v['projectId'] == $value['projectId'] && $v['task'] == $value['task']){
$value['totalHoursWorked'] = $v['totalHoursWorked'];
}
}
}
答案 1 :(得分:1)
根据您的虚拟值,您可以使用foreach
并使用&
引用数组1。例如:
$array1 = array(
array('projectId' => 1, 'task' => 1, 'hoursEstimated' => 345),
array('projectId' => 1, 'task' => 4, 'hoursEstimated' => 274),
array('projectId' => 2, 'task' => 1, 'hoursEstimated' => 432),
array('projectId' => 2, 'task' => 2, 'hoursEstimated' => 347),
array('projectId' => 2, 'task' => 4, 'hoursEstimated' => 815),
);
$array2 = array(
array('projectId' => 1, 'task' => 1, 'totalHoursWorked' => 145),
array('projectId' => 1, 'task' => 2, 'totalHoursWorked' => 234),
array('projectId' => 1, 'task' => 3, 'totalHoursWorked' => 283),
array('projectId' => 1, 'task' => 4, 'totalHoursWorked' => 174),
array('projectId' => 2, 'task' => 1, 'totalHoursWorked' => 205),
array('projectId' => 2, 'task' => 2, 'totalHoursWorked' => 153),
array('projectId' => 2, 'task' => 3, 'totalHoursWorked' => 634),
array('projectId' => 2, 'task' => 4, 'totalHoursWorked' => 815),
);
foreach($array1 as &$values) {
foreach($array2 as $values2) {
if($values['projectId'] == $values2['projectId'] && $values['task'] == $values2['task']) {
$values['totalHoursWorked'] = $values2['totalHoursWorked'];
}
}
}
echo '<pre>';
print_r($array1);
应该产生类似的东西:
Array
(
[0] => Array
(
[projectId] => 1
[task] => 1
[hoursEstimated] => 345
[totalHoursWorked] => 145
)
[1] => Array
(
[projectId] => 1
[task] => 4
[hoursEstimated] => 274
[totalHoursWorked] => 174
)
[2] => Array
(
[projectId] => 2
[task] => 1
[hoursEstimated] => 432
[totalHoursWorked] => 205
)
[3] => Array
(
[projectId] => 2
[task] => 2
[hoursEstimated] => 347
[totalHoursWorked] => 153
)
[4] => Array
(
[projectId] => 2
[task] => 4
[hoursEstimated] => 815
[totalHoursWorked] => 815
)
)
答案 2 :(得分:1)
您可以尝试以下方式:
foreach($array1 as &$arr1){
foreach($array2 as $arr2){
if($arr1['projectId'] === arr2['projectId']
&& $arr1['task'] === $arr2['task']){
$arr1['totalHoursWorked'] = $arr2['totalHoursWorked'];
}
}
}
//or
array_walk($array1,function($arr1){
foreach($array2 as $arr2){
if($arr1['projectId'] === arr2['projectId']
&& $arr1['task'] === $arr2['task']){
$arr1['totalHoursWorked'] = $arr2['totalHoursWorked'];
}
}
});
print_r($array1);