2010-08-03 2 views
8

메신저 두 개의 배열을 병합하려고합니다. 둘 다 숫자 키가 있으며 고유합니다. 내가 array_merge를 사용할 때, 그것은 0숫자 키를 유지하면서 두 배열을 병합

에서 시작 인덱스 재 그래서 난이 두 가지가 함께 고유 키를 유지 병합 할 내가

[2] = abc 
[5] = cde 

을 가지고 내가

[32] = fge 
[13] = def 

이 있다고 할 수 있습니다 .

아래의 설명은 현재 병합 동작에 대한 설명입니다.이 문제를 해결할 수있는 방법은 무엇입니까?

"모든 배열에 숫자 키만 포함되어 있으면 결과 배열에 0부터 시작하는 증분 키가 제공됩니다."

답변

15

+ 연산자를 사용해보십시오.

$arr1 = array(); 
$arr2 = array(); 
$arrmerge = array(); 
array_push($arr, $arr1, $arr2); 

이 arr1을 $

와 $ arr2 병합와 $ arrmerge에 저장됩니다 :

[2] = abc 
[5] = cde 
[32] = fge 
[13] = def 
0

이 시도 :

$one = array(2 => 'abc', 5 => 'cde'); 
$two = array(32 => 'fge', 13 => 'def'); 
$three = $one + $two; 

$three 이제 다음과 같아야합니다. foreach를 사용하여 액세스 할 수 있습니다.

희망! 당신은 숫자 키 배열을 병합 키를 유지하고 두 번째의 항목으로 첫 번째 배열에서 항목을 오버라이드 (override) 할 경우

+0

없음 , 이것은 다차원 배열'array ($ arr1, $ arr2)'를 생성 할 것이다. – deceze

1
$result = array(2 => 'abc', 5 => 'cde') + array(32 => 'fge', 13 => 'def'); 
print_r($result); 
6

:

$a = array(0 => "a", 1 => "b"); 
$b = array(1 => "c", 5 => "d"); 
var_dump(array_diff_key($a, $b) + $b); 

가 생성됩니다 : 사실

array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "c" 
    [5]=> 
    string(1) "d" 
} 
관련 문제