빠른 방법은 첫 번째 배열을 반복하고, 두번째의 값을 추가하는 것 :
$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
필드도 추가됩니다. 이 이름을 사용하거나 inner-if 블록을 대신 $comb += $arr2;
(모든 존재하지 않는 인덱스를 병합해야 함)으로 변경하여 여러 필드를 처리 할 수 있습니다.
당신은 단지 하나의 문자열로 동일한 ID 년대와 두 개의 문자열을 연결하려고, 또는 여러 값을 갖는 본질적으로 하나의 키가하려고하는 문자열 키를 필요로하는? –
array_merge/addition은 배열의 차원을 변경하지 않습니다. 2 개의 1x10 어레이로 피드하면 2x10 또는 4x5가 아닌 1x20으로 끝납니다. –
마지막으로 SQL 쿼리를 변경하여이 문제를 해결했습니다. php는 복잡한 배열 작업에 적합하지 않은 것 같습니다. :-( – user1548619