2010-08-03 28 views
8

cố gắng kết hợp hai mảng lại với nhau. cả hai đều có khóa số và là duy nhất. khi tôi sử dụng array_merge, nó lại chỉ số bắt đầu từ 0.hợp nhất hai mảng, trong khi duy trì các phím số

nên cho phép nói rằng tôi có

[2] = abc 
[5] = cde 

và tôi có

[32] = fge 
[13] = def 

tôi muốn kết hợp hai cùng nhau duy trì các phím độc đáo .

dưới đây là giải thích về hành vi hợp nhất hiện tại .. bất kỳ cách nào xung quanh vấn đề này?

"Nếu tất cả các mảng chỉ chứa các phím số, mảng kết quả được cho các phím gia tăng bắt đầu từ số không."

Trả lời

15

Hãy thử sử dụng toán tử +.

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

$three bây giờ sẽ trông như thế này:

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

Hãy thử điều này:

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

$ arr1 và $ arr2 sẽ sáp nhập và được lưu trữ trong $ arrmerge. Bạn có thể truy cập nó bằng cách foreach.

Hy vọng nó hoạt động!

+0

Trên thực tế không có , điều này sẽ tạo ra một mảng đa chiều 'mảng ($ arr1, $ arr2)'. – deceze

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

nếu bạn muốn kết hợp các mảng với các phím số, giữ phím và ghi đè các mục từ mảng đầu tiên của mặt hàng từ thứ hai:

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

sẽ sản xuất:

array(3) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "c" 
    [5]=> 
    string(1) "d" 
} 
Các vấn đề liên quan