在 php 中,我们经常需要处理数组,其中一个常见的问题是如何删除二维数组中的重复值。这个问题并不难解决,我们可以使用 php 提供的一些数组函数,比如array_map、array_unique、array_filter 等等。下面,就让我们来了解一下如何实现删除二维数组重复值的方法。
二维数组是指一个数组中的元素也是一个数组,它可以表示为一个矩阵。在 PHP 中,我们可以使用以下方式创建一个二维数组:
$students = array(
array('name' => '张三', 'age' => 18),
array('name' => '李四', 'age' => 20),
array('name' => '王五', 'age' => 22),
array('name' => '赵六', 'age' => 18)
);上面的代码中,我们创建了一个 $students 数组,其中每个元素也是一个数组,包含 name 和 age 两个键值对。这个数组可以理解为一个学生信息的表格。
接下来,我们介绍若干种删除二维数组重复值的方法:
function remove_duplicate_by_foreach($arr){
$result = array();//定义一个新数组,用来存放去重后的数据
foreach($arr as $key => $value){
$flag = false;
foreach($result as $val){
if($value == $val){
$flag = true;
break;
}
}
if(!$flag){ //如果数据不重复,则将其添加到新数组中
array_push($result, $value);
}
}
return $result;
}
$students = array(
array('name' => '张三', 'age' => 18),
array('name' => '李四', 'age' => 20),
array('name' => '王五', 'age' => 22),
array('name' => '赵六', 'age' => 18),
array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_foreach($students));上面的代码中,我们首先定义了一个空的 $result 数组,然后使用两个 foreach 循环遍历原数组 $arr,对于其中的每个元素 $value,在 $result 数组中查找是否存在相同的元素,如果不存在,则将其添加到 $result 数组中。
立即学习“PHP免费学习笔记(深入)”;
这种方法比较简单易懂,但是效率比较低,尤其是当数据较多时,遍历的时间会变得很长。
function remove_duplicate_by_array_map($arr){
$temp = array_map("serialize", $arr);//将数组中的每个元素都序列化
$result = array_unique($temp);//去重操作
$new_array = array();
foreach ($result as $value) {//反序列化操作
array_push($new_array, unserialize($value));
}
return $new_array;
}
$students = array(
array('name' => '张三', 'age' => 18),
array('name' => '李四', 'age' => 20),
array('name' => '王五', 'age' => 22),
array('name' => '赵六', 'age' => 18),
array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_array_map($students));上面的代码中,我们先使用 array_map 函数将原数组 $arr 中的每个元素都序列化成字符串,然后使用 array_unique 函数对序列化后的字符串进行去重操作,最后再使用 foreach 循环反序列化成正常的数组元素。
这种方法相比于方法一,效率稍高一些,但是序列化和反序列化的过程可能会影响性能。
function remove_duplicate_by_array_filter($arr){
$unique_arr = array_unique(array_map('serialize',$arr));//先将数组序列化再去重
return array_filter($unique_arr, function($var){//回调函数进行反序列化
return unserialize($var);
});
}
$students = array(
array('name' => '张三', 'age' => 18),
array('name' => '李四', 'age' => 20),
array('name' => '王五', 'age' => 22),
array('name' => '赵六', 'age' => 18),
array('name' => '张三', 'age' => 18)
);
print_r(remove_duplicate_by_array_filter($students));上面的代码中,我们先使用 array_map 函数将原数组 $arr 中的每个元素都序列化成字符串,然后使用 array_unique 函数对序列化后的字符串进行去重操作,最后再使用 array_filter 函数实现反序列化操作。
这种方法相比于前两种方法,代码量更少,效率也更高。
在 PHP 中,删除二维数组中的重复值并不难,可以使用 array_map、array_unique、array_filter 等函数进行实现。根据需要选择不同的方法,以达到更高效的处理结果。
以上就是php怎么删除二维数组重复值的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号