这应该是一个非常简单的答案,我可能只是很厚,但我在 PHP 中有两个数组:
$data1 = array(
array(
'qid' => 'q-prof-1-1',
'value' => 10,
),
array(
'qid' => 'q-prof-2-1',
'value' => 3,
),
);
$data2 = array(
array(
'qid' => 'q-prof-2-1',
'value' => 5,
),
array(
'qid' => 'q-prof-3-2',
'value' => 1,
),
);
我想导致:
$result = array(
array(
'qid' => 'q-prof-1-1',
'value' => 10,
),
array(
'qid' => 'q-prof-2-1',
'value' => 5,
),
array(
'qid' => 'q-prof-3-2',
'value' => 1,
),
);
...这样两者将被合并-但是,如果它找到与另一个匹配的qid,则将其替换为后者。
我试过混合使用array_merge()
, array_merge_recursive()
, $data1 + $data2
, $data2 + $data1
, array_replace()
,array_replace_recursive()
等array_diff()
,但每个选项似乎都返回两个或四个值而不是三个值。当然,我已经完成了相当一部分的 SO 狩猎。
有任何想法吗?比起任何类型的大规模迭代函数,更喜欢简短而甜蜜的东西!
在此先感谢:) 马特
编辑:
我刚刚意识到,如果我将 $data1 和 $data2 中的数组转换为键值对,那么大多数合并和替换函数都可以工作,例如:
$data1 = array(
'q-prof-1-1' => array(
'qid' => 'q-prof-1-1',
'value' => 10,
) // ... etc etc
);
...但我仍然宁愿不必更改原始数据