2013-05-28 4 views
8

Có cách nào cho các mảngLàm cách nào để hợp nhất các mảng đa chiều trong khi vẫn giữ phím?

$array1 = array(
    '21-24' => array(
     '1' => array("...") 
    ) 
); 

$array2 = array(
    '21-24' => array(
     '7' => array("..."), 
    ) 
); 

$array3 = array(
    '25 and over' => array(
     '1' => array("...") 
    ) 
); 

$array4 = array(
    '25 and over' => array(
     '7' => array("...") 
    ) 
); 

được sáp nhập là kết quả vào mảng dưới đây?

array(
    '21-24' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '7' => array("...") 
    ) 
); 

LƯU Ý:

  • tôi không có kiểm soát đối với cấu trúc mảng vì vậy bất kỳ giải pháp mà đòi hỏi phải có sự thay đổi cấu trúc không phải là những gì tôi đang tìm kiếm
  • tôi chủ yếu quan tâm giữ gìn chìa khóa của 2 cấp độ đầu tiên nhưng một giải pháp mạnh mẽ hơn là một giải pháp có thể xử lý tất cả các cấp.

tôi đã cố gắng sử dụng array_merge_recursive() như thế này

$x = array_merge_recursive($array1, $array2); 
$x = array_merge_recursive($x, $array3); 
$x = array_merge_recursive($x, $array4); 

nhưng nó dẫn đến

array(
    '21-24' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ),  
    '25 and over' => array(
     '1' => array("..."), 
     '2' => array("...") 
    ) 
); 
+0

Bạn chỉ có 4 mảng? – HamZa

+0

@tessmore Nó đã có trong câu hỏi giải thích rằng tôi đã thử nó nhưng không hoạt động như mong đợi – arvinsim

+0

@HamZaDzCyberDeV Mã thực tế tôi đang làm việc trên khác nhau. Nhưng những gì là hằng số là các khóa mức độ đầu tiên và thứ hai. Tất nhiên, giải pháp tốt nhất không nên quan tâm về điều đó cả. – arvinsim

Trả lời

21

bạn đã xem xét array_replace_recursive()?

print_r(array_replace_recursive($array1, $array2, $array3, $array4)); 
+4

Nó giống như bạn biết toàn bộ hướng dẫn sử dụng PHP từ đầu của bạn: D – HamZa

+1

@Jack Yep, array_replace_recursive() đã làm những gì tôi muốn làm. – arvinsim

+1

@Jack lưu lại ngày của tôi hoạt động +1 –