2010-08-03 13 views
8

próbując połączyć dwie tablice razem. oba mają klawisze numeryczne i są unikatowe. podczas korzystania array_merge, to ponownie indeksy zaczynają się od 0.Połącz dwie tablice, zachowując klucze numeryczne

więc powiedzmy, że mam

[2] = abc 
[5] = cde 

i mam

[32] = fge 
[13] = def 

chcę połączyć te dwa razem zachowując unikalne klucze .

Poniżej znajduje się wyjaśnienie obecnego zachowania scalania .. w dowolny sposób?

"Jeśli wszystkie tablice zawierają tylko klucze numeryczne, wynikowa tablica otrzymuje klucze inkrementujące, począwszy od zera."

Odpowiedz

15

Spróbuj użyć operatora +.

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

$three powinna teraz wyglądać następująco:

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

Spróbuj tego:

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

$ i $ arr2 ARR1 będzie scalić i przechowywane w $ arrmerge. Możesz uzyskać do niego dostęp za pomocą foreach.

Mam nadzieję, że to działa!

+0

Właściwie nie , stworzy to tablicę wielowymiarowych 'tablic ($ arr1, $ arr2)'. – deceze

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

jeśli chcesz scalić tablice z klawiszy numerycznych, trzymać klucze i zastępują elementy z pierwszej tablicy przez elementy z drugiej:

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

będzie produkować:

array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "c" 
    [5]=> 
    string(1) "d" 
} 
Powiązane problemy