2010-11-09 68 views
2

我有2個數組,如下圖所示,並希望將它們合併到一起,而不是將鍵複製到新數組中。合併2個沒有重複鍵的數組

$陣列1:

Array 
(
[0] => Array 
    (
     [a] => Array 
      (
       [p] => Array 
        (
         [a] => 1 
        ) 

      ) 

     [a/s] => Array 
      (
       [p] => Array 
        (
         [o] => 1 
        ) 

      ) 

     [a/p] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e] => 1 
         [d] => 1 
        ) 

      ) 

     [a/u] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e_a] => 1 
         [d_a] => 1 
        ) 
      ) 
    ) 
) 

$數組2:

Array 
(
[0] => Array 
    (
     [a/x] => Array 
      (
       [p] => Array 
        (
         [a] => 1 
        ) 

      ) 

     [a/s] => Array 
      (
       [p] => Array 
        (
         [o] => 1 
        ) 

      ) 

     [a/p] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e] => 1 
         [d] => 1 
        ) 

      ) 

     [a/u] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e_a] => 1 
         [d_a] => 1 
        ) 
      ) 
    ) 
) 


$result = array_merge_recursive($array1, $array2); 

$結果:

Array 
(
[0] => Array 
    (
     [a] => Array 
      (
       [p] => Array 
        (
         [a] => 1 
        ) 
      ) 

     [a/s] => Array 
      (
       [p] => Array 
        (
         [o] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 
        ) 
      ) 

     [a/p] => Array 
      (
       [p] => Array 
        (
         [w] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 

         [e] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 

         [d] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 
        ) 
      ) 

     [a/u] => Array 
      (
       [p] => Array 
        (
         [w] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 

         [e_a] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 

         [d_a] => Array 
          (
           [0] => 1 
           [1] => 1 
          ) 
        ) 
      ) 

     [a/x] => Array 
      (
       [p] => Array 
        (
         [a] => 1 
        ) 
      ) 
    ) 
) 

我怎麼會去使它看起來像嗎?

Array 
(
[0] => Array 
    (
     [a] => Array 
      (
       [p] => Array 
        (
         [a] => 1 
        ) 

      ) 

     [a/s] => Array 
      (
       [p] => Array 
        (
         [o] => 1 

        ) 

      ) 

     [a/p] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e] => 1 
         [d] => 1 
        ) 

      ) 

     [a/u] => Array 
      (
       [p] => Array 
        (
         [w] => 1 
         [e_a] => 1 
         [d_a] => 1 
        ) 
      ) 

     [a/x] => Array 
      (
       [p] => 1 
      ) 
    ) 
) 

我要對這個錯誤的方式或者是有一些方法來打掃一下嗎?例子歡迎!

感謝

回答

2
function array_merge_recursive_unique($array1, $array2) { 
    if (empty($array1)) return $array2; //optimize the base case 

    foreach ($array2 as $key => $value) { 
    if (is_array($value) && is_array(@$array1[$key])) { 
     $value = array_merge_recursive_unique($array1[$key], $value); 
    } 
    $array1[$key] = $value; 
    } 
    return $array1; 
}