合并多维数组中重复的数组

时间:2015-08-14 21:26:53

标签: php

我一直试图合并此数组只有$array[4]存在多次,例如:$array[4] == 'red'两次。如何在保留其他阵列的同时仅合并这些阵列?我已经做了几次尝试,如果被问到,我愿意将我的努力包括在内。

考虑这个数组:

array(3) {
  [0]=>
     array(5) {
               [0]=>
                 string(3) "UID"
               [1]=>
                 string(3) "532"
               [2]=>
                 string(1) "2"
               [3]=>
                 string(9) "Domain(s)"
               [4]=>
                 string(20) "red"
             }
 [1]=>
    array(5) {
             [0]=>
                string(3) "UID"
             [1]=>
                string(3) "532"
             [2]=>
                string(7) "License"
             [3]=>
                string(3) "Fee"
             [4]=>
                string(20) "red"
            }
 [2]=>
     array(5) {
               [0]=>
                 string(3) "UID"
               [1]=>
                 string(3) "536"
               [2]=>
                 string(7) "License"
               [3]=>
                 string(3) "Fee"
               [4]=>
                 string(16) " University Test"
             }
    }

尝试实现:

    array(3) {
  [0]=>
     array(5) {
               [0]=>
                 string(3) "UID"
               [1]=>
                 string(3) "532"
               [2]=>
                 string(1) "2"
               [3]=>
                 string(9) "Domain(s)"
               [4]=>
                 string(20) " red"
               [5]=>
                 string(3) "Fee"
               [6]=>
                 string(7) "License"
             }
 [1]=>
     array(5) {
               [0]=>
                 string(3) "UID"
               [1]=>
                 string(3) "536"
               [2]=>
                 string(7) "License"
               [3]=>
                 string(3) "Fee"
               [4]=>
                 string(16) " University Test"
             }
    }

1 个答案:

答案 0 :(得分:1)

foreach ($test as $item) {
    if (!isset($merged[$item[4]])) {
        // add the item to the merged array using key=$item[4]
        $merged[$item[4]] = $item;
    } else {
         // merge the item with the item that is already in the array at key=$item[4]
         $merged[$item[4]] = array_unique(array_merge($merged[$item[4]], $item));
         // array_unique is necessary because array_merge will not overwrite numeric keys
    }
}
// convert the keys back to numeric (if you care to)
$merged = array_values($merged);