关于“PHP二维数组合并及去重复的方法”的问题,我可以给你提供以下的攻略。
关于“PHP二维数组合并及去重复的方法”的问题,我可以给你提供以下的攻略。
什么是二维数组
在 PHP 中,二维数组是一个包含多个数组的数组,每个子数组可以包含一个或多个元素。二维数组主要使用“数组名[下标1][下标2]”这种方式访问。
例如:
$array = array(
array("name","age","sex"),
array("Tom","20","male"),
array("Jerry","21","male"),
array("Lisa","19","female")
);
以上例子中,$array 是一个二维数组,包含 4 个子数组。
接下来我们针对二维数组合并和去重复问题进行说明。
合并二维数组
PHP 中的 array_merge() 函数可以用于合并两个或多个数组。例如,我们有两个数据:
$A = array(
array('id'=>1,'name'=>'张三'),
array('id'=>2,'name'=>'李四'),
);
$B = array(
array('id'=>3,'name'=>'王五'),
array('id'=>2,'name'=>'李四'),
);
如果我们想把 $B 中的内容合并到 $A 中,可以这么写:
$mergeArr = array_merge($A, $B);
结果会变为:
array(
array('id'=>1,'name'=>'张三'),
array('id'=>2,'name'=>'李四'),
array('id'=>3,'name'=>'王五'),
array('id'=>2,'name'=>'李四'),
)
从结果来看,虽然 $B 中的二维数组与 $A 中的一个二维数组重复了,但却没有被去重。如果我们想要去重,就需要使用 array_unique() 函数进行去重。
去重二维数组
为了让二维数组去重,需要先对二维数组中的每个子数组进行排序。上面的例子中,我们要对它们按照 id 字段进行排序,可以这样写:
// 对数组 $mergeArr 的 id 字段排重
$idList = array_unique(array_column($mergeArr, 'id'));
foreach ($mergeArr as $key => $value) {
$existKey = array_search($value['id'], $idList);
if (is_numeric($existKey) && $existKey != $key) {
unset($mergeArr[$key]);
}
}
// 对数组 $mergeArr 的其他字段去重
$mergeArr = array_map("unserialize", array_unique(array_map("serialize", $mergeArr)));
这样,$mergeArr 数组就变成了这样:
array(
array('id'=>1,'name'=>'张三'),
array('id'=>2,'name'=>'李四'),
array('id'=>3,'name'=>'王五'),
)
充分体现了去重的效果。
示例说明
示例一: 合并两个二维数组,并去掉重复的数组。
<?php
$A = array(
array('id'=>1,'name'=>'张三'),
array('id'=>2,'name'=>'李四'),
);
$B = array(
array('id'=>3,'name'=>'王五'),
array('id'=>2,'name'=>'李四'),
);
$mergeArr = array_merge($A, $B);
$idList = array_unique(array_column($mergeArr, 'id'));
foreach ($mergeArr as $key => $value) {
$existKey = array_search($value['id'], $idList);
if (is_numeric($existKey) && $existKey != $key) {
unset($mergeArr[$key]);
}
}
$mergeArr = array_map("unserialize", array_unique(array_map("serialize", $mergeArr)));
print_r($mergeArr);
?>
输出结果:
Array
(
[0] => Array
(
[id] => 1
[name] => 张三
)
[1] => Array
(
[id] => 2
[name] => 李四
)
[2] => Array
(
[id] => 3
[name] => 王五
)
)
以上结果中,去掉了二维数组中的重复元素。
示例二: 给一个二维数组按照其中的某一个字段去重。
<?php
$array = array(
array('id'=>1,'name'=>'张三'),
array('id'=>2,'name'=>'李四'),
array('id'=>3,'name'=>'张三')
);
$idList = array_unique(array_column($array, 'id'));
foreach ($array as $key => $value) {
$existKey = array_search($value['id'], $idList);
if (is_numeric($existKey) && $existKey != $key) {
unset($array[$key]);
}
}
$array = array_map("unserialize", array_unique(array_map("serialize", $array)));
print_r($array);
?>
输出结果:
Array
(
[0] => Array
(
[id] => 1
[name] => 张三
)
[1] => Array
(
[id] => 2
[name] => 李四
)
)
以上结果中,根据数组中的 id 字段完成了去重的操作。
本文标题为:php二维数组合并及去重复的方法


基础教程推荐
- Laravel框架实现修改登录和注册接口数据返回格式的方法 2022-11-11
- php实现数字补零的方法总结 2022-11-20
- PHP迭代器接口Iterator用法分析 2022-10-04
- PHP cURL获取微信公众号access_token的实例 2022-10-15
- PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】 2023-03-18
- PHP实现LRU算法的示例代码 2023-06-26
- YII2框架中日志的配置与使用方法实例分析 2023-04-02
- 一篇文章弄懂PHP和HTML的嵌套写法 2023-06-19
- PHP排序算法之归并排序(Merging Sort)实例详解 2022-10-15
- Yii框架学习笔记之应用组件操作示例 2023-03-12