簡単な方法は、最初の配列を繰り返し処理し、2番目の配列の値を追加することです。
$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
ループシナリオに固執するために、最初の配列を反復処理し、ネストされたループを2番目の配列を反復処理することができます。
$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
いる場合にのみ、そのフィールドも配列に追加されます。これを拡張して、名前で、または代わりにinner-ifブロックを(存在しないすべてのインデックスをマージする必要がある)に変更することで、任意の数のフィールドを処理することもできます。$array2
ID
Content
$comb += $arr2;