php 两个二维数组怎么去重
-
使用PHP提供的array_merge函数将两个二维数组合并,并使用array_unique函数去除重复项。
以下是实现的代码示例:
“`php
$array1 = array(
array(‘A’, ‘B’, ‘C’),
array(‘D’, ‘E’, ‘F’),
array(‘G’, ‘H’, ‘I’)
);$array2 = array(
array(‘A’, ‘B’, ‘C’),
array(‘J’, ‘K’, ‘L’),
array(‘M’, ‘N’, ‘O’)
);// 将两个二维数组合并
$mergedArray = array_merge($array1, $array2);// 去除重复项
$uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));// 打印去重后的数组
print_r($uniqueArray);
“`输出结果:
“`
Array
(
[0] => Array
(
[0] => A
[1] => B
[2] => C
)[1] => Array
(
[0] => D
[1] => E
[2] => F
)[2] => Array
(
[0] => G
[1] => H
[2] => I
)[5] => Array
(
[0] => J
[1] => K
[2] => L
)[6] => Array
(
[0] => M
[1] => N
[2] => O
))
“`以上代码先将两个二维数组合并为一个一维数组,然后使用array_map函数将所有值先序列化后再反序列化,再使用array_unique函数去除重复项。最后得到的数组即为去重后的结果。
2年前 -
在PHP中,可以使用array_unique()函数来去除数组中的重复值。但是对于二维数组,array_unique()函数只能去除第一层数组的重复值,不能处理多层嵌套的重复值。如果要对二维数组去重,可以使用以下方法:
1. 使用循环和in_array()函数:遍历二维数组中的每一个元素,逐个判断是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。这样就能实现二维数组去重。
“`php
function unique_array($array) {
$result = array();
foreach($array as $key => $value) {
if (!in_array($value, $result)) {
$result[] = $value;
}
}
return $result;
}$unique_array = unique_array($array);
“`2. 使用array_map()函数和serialize()函数:将二维数组先通过array_map()函数遍历成一维数组,再使用serialize()函数将每个元素序列化为字符串,然后使用array_unique()函数对一维数组进行去重,最后使用array_map()函数和unserialize()函数将去重后的一维数组恢复为二维数组。
“`php
function unique_array($array) {
$temp = array_map(‘serialize’, $array);
$unique_temp = array_unique($temp);
$result = array_map(‘unserialize’, $unique_temp);
return $result;
}$unique_array = unique_array($array);
“`3. 使用array_merge()函数和call_user_func_array()函数:将二维数组通过array_merge()函数合并成一维数组,然后使用array_unique()函数对一维数组进行去重,最后使用call_user_func_array()函数将去重后的一维数组重新分割为二维数组。
“`php
function unique_array($array) {
$merged_array = call_user_func_array(‘array_merge’, $array);
$unique_merged_array = array_unique($merged_array);
$result = array_chunk($unique_merged_array, count($array[0]));
return $result;
}$unique_array = unique_array($array);
“`4. 使用array_walk_recursive()函数和in_array()函数:通过array_walk_recursive()函数遍历二维数组中的每一个元素,然后使用in_array()函数判断该元素是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。
“`php
function unique_array($array) {
$result = array();
array_walk_recursive($array, function($value) use (&$result) {
if (!in_array($value, $result)) {
$result[] = $value;
}
});
return $result;
}$unique_array = unique_array($array);
“`5. 使用array_reduce()函数和in_array()函数:通过array_reduce()函数将二维数组转换为一维数组,然后使用in_array()函数判断该元素是否已经存在于一个新数组中,如果不存在,则将其添加到新数组中。
“`php
function unique_array($array) {
$merged_array = array_reduce($array, function($carry, $item) {
return array_merge($carry, $item);
}, array());
$result = array();
foreach($merged_array as $value) {
if (!in_array($value, $result)) {
$result[] = $value;
}
}
return $result;
}$unique_array = unique_array($array);
“`这些方法可以根据不同的需求选择合适的方式进行二维数组去重。
2年前 -
在PHP中,可以使用array_unique()函数来对一个二维数组去重。下面是具体的操作流程:
1. 定义两个二维数组:
“`php
$arr1 = array(
array(“name” => “Tom”, “age” => 20),
array(“name” => “Jerry”, “age” => 25),
array(“name” => “Alice”, “age” => 30)
);$arr2 = array(
array(“name” => “Jerry”, “age” => 25),
array(“name” => “Bob”, “age” => 28),
array(“name” => “Alice”, “age” => 30)
);
“`2. 将两个二维数组合并为一个新的二维数组:
“`php
$mergedArray = array_merge($arr1, $arr2);
“`3. 使用array_map()函数结合匿名函数进行比较:
“`php
$uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));
“`4. 打印去重后的结果:
“`php
print_r($uniqueArray);
“`完整的代码如下:
“`php
$arr1 = array(
array(“name” => “Tom”, “age” => 20),
array(“name” => “Jerry”, “age” => 25),
array(“name” => “Alice”, “age” => 30)
);$arr2 = array(
array(“name” => “Jerry”, “age” => 25),
array(“name” => “Bob”, “age” => 28),
array(“name” => “Alice”, “age” => 30)
);$mergedArray = array_merge($arr1, $arr2);
$uniqueArray = array_map(“unserialize”, array_unique(array_map(“serialize”, $mergedArray)));
print_r($uniqueArray);
“`输出结果:
“`
Array
(
[0] => Array
(
[name] => Tom
[age] => 20
)[1] => Array
(
[name] => Jerry
[age] => 25
)[2] => Array
(
[name] => Alice
[age] => 30
)[3] => Array
(
[name] => Bob
[age] => 28
))
“`以上是一种针对二维数组去重的方法,通过将二维数组序列化后再去除重复元素,然后再反序列化得到去重后的结果。
2年前