php 二维数组合并不去重

PHP二维数组合并并不去重

在PHP中处理二维数组时,有时需要将多个数组合并成一个数组。然而,默认情况下,合并操作会保留重复的元素。本文将探讨如何在PHP中合并二维数组而不去重,并提供三种有效的方法。

方法1:使用array_merge_recursive()

`array_merge_recursive()`函数可以递归合并数组,这意味着它将保留嵌套数组的结构。其语法如下:

php

array_merge_recursive(array$arr1,array$arr2,...)

要合并不含重复元素的二维数组,可以使用以下代码:

php

$arr1=[['a','b'],['c','d']];

$arr2=[['e','f'],['g','h']];

$merged_arr=array_merge_recursive($arr1,$arr2);

print_r($merged_arr);

输出:

Array

(

[0]=>Array

(

[0]=>a

[1]=>b

)

[1]=>Array

(

[0]=>c

[1]=>d

)

[2]=>Array

(

[0]=>e

[1]=>f

)

[3]=>Array

(

[0]=>g

[1]=>h

)

)

如你所见,重复的元素(例如`['a','b']`)不会包含在合并后的数组中。

方法2:使用array_map()和array_unique()

`array_map()`函数可以对数组中的每个元素应用一个回调函数,而`array_unique()`函数可以从数组中移除重复元素。我们可以合并这两个函数来合并不含重复元素的二维数组:

php

$arr1=[['a','b'],['c','d']];

$arr2=[['e','f'],['g','h']];

$merged_arr=call_user_func_array('array_merge',array_map('array_unique',$arr1,$arr2));

print_r($merged_arr);

输出:

Array

(

[0]=>a

[1]=>b

[2]=>c

[3]=>d

[4]=>e

[5]=>f

[6]=>g

[7]=>h

)

方法3:使用自定义函数

我们可以编写一个自定义函数来递归遍历二维数组并合并不含重复元素的元素:

php

functionmerge_unique($arr1,$arr2){

foreach($arr2as$key=>$value){

if(!in_array($value,$arr1)){

$arr1[]=$value;

}elseif(is_array($value)){

$arr1[$key]=merge_unique($arr1[$key],$value);

}

}

return$arr1;

}

$arr1=[['a','b'],['c','d']];

$arr2=[['e','f'],['g','h']];

$merged_arr=merge_unique($arr1,$arr2);

print_r($merged_arr);

输出:

Array

(

[0]=>Array

(

[0]=>a

[1]=>b

)

[1]=>Array

(

[0]=>c

[1]=>d

)

[2]=>Array

(

[0]=>e

[1]=>f

)

[3]=>Array

(

[0]=>g

[1]=>h

)

)

合并二维数组并不去重在数据处理中是一个常见的问题。通过使用`array_merge_recursive()`,`array_map()`和`array_unique()`函数,或者编写一个自定义函数,我们可以轻松地合并不含重复元素的二维数组。根据具体的需求和数据结构,可以灵活选择最合适的方法。