一种快速的方法是遍历第一个数组并附加第二个数组的值:
$array1 = array('11' => 'Aa', '12' => 'Bb', '13' => 'Cc', '14' => 'Dd', '15' => 'Ee');
$array2 = array('11' => 'Cat', '13' => 'Dog', '14' => 'Donkey');
$combined = array();
foreach ($array1 as $key => $val) {
$combined[$key] = $val . (isset($array2[$key]) ? ' '.$array2[$key] : '');
}
这将遍历每个键/值$array1
并将其添加到$combined
数组中。如果$array2
存在具有相同索引的值,它会将其附加到来自 的该值$array1
,并用空格分隔。
更新:我(再次)误读了数组的格式。我假设ID
是数组中的实际索引,但由于示例数组输出同时具有Name
和Content
,我假设ID
是实际索引字符串值,而不是数组本身的索引。要坚持循环场景,您可以遍历第一个数组并让嵌套循环遍历第二个数组:
$array1 = array(
array('ID' => '11', 'Name' => 'Aa'),
array('ID' => '12', 'Name' => 'Bb'),
array('ID' => '13', 'Name' => 'Cc'),
array('ID' => '14', 'Name' => 'Dd'),
array('ID' => '15', 'Name' => 'Ee'),
);
$array2 = array(
array('ID' => '11', 'Content' => 'Cat'),
array('ID' => '13', 'Content' => 'Dog'),
array('ID' => '14', 'Content' => 'Donkey')
);
$combined = array();
foreach ($array1 as $arr) {
$comb = array('ID' => $arr['ID'], 'Name' => $arr['Name'], 'Content' => '');
foreach ($array2 as $arr2) {
if ($arr2['ID'] == $arr['ID']) {
$comb['Content'] = $arr2['Content'];
break;
}
}
$combined[] = $comb;
}
这会将每个值添加$array1
到组合数组中,并且当且仅当其中的值$array2
包含相同ID
的字段时,它也会将其Content
字段添加到数组中。这也可以扩展为处理任意数量的字段,无论是通过名称,还是通过将内部 if 块更改为 have $comb += $arr2;
(它应该合并所有不存在的索引)。