php数组去重处理 实用代码方法分享
作者:Alpha时间:2019-01-11 阅读数:4617 +人阅读
php数组去重,有对应的处理函数array_unique()
一维数组的重复项:
使用array_unique函数即可,使用实例如下:
代码如下 复制代码
<?php $aa = array("apple", "banana", "pear", "apple", "wail", "watermalon"); $bb = array_unique($aa); print_r($bb); ?>
结果如下:
Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。
二维数组去重项
代码如下
例如:
$result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other'), 2=>array('a'=>1,'b'=>'other'), );
处理成
$result = array( 0=>array('a'=>1,'b'=>'Hello'), 1=>array('a'=>1,'b'=>'other') );
使用方法
array_unique($result, SORT_REGULAR);
二维数组的重复项:
对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:
㈠因为某一键名的值不能重复,删除重复项
PHP代码如下
<?php function assoc_unique($arr, $key) { $tmp_arr = array(); foreach ($arr as $k => $v) { if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true unset($arr[$k]); } else { $tmp_arr[] = $v[$key]; } } sort($arr); //sort函数对数组进行排序 return $arr; } $aa = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 125, 'name' => '赵六'), array('id' => 126, 'name' => '赵六') ); $key = 'id'; assoc_unique(&$aa, $key); print_r($aa); ?>
显示结果为:
Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )
㈡因内部的一维数组不能完全相同,而删除重复项
代码如下
<?php function array_unique_fb($array2D) { foreach ($array2D as $v) { $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp);//去掉重复的字符串,也就是重复的一维数组 foreach ($temp as $k => $v) { $temp[$k] = explode(",", $v);//再将拆开的数组重新组装 } return $temp; } $aa = array( array('id' => 123, 'name' => '张三'), array('id' => 123, 'name' => '李四'), array('id' => 124, 'name' => '王五'), array('id' => 123, 'name' => '李四'), array('id' => 126, 'name' => '赵六') ); $bb = array_unique_fb($aa); print_r($bb) ?>
显示结果:
Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )
在实际运用中,对数据库查询返回的结果可以针对性的使用。
当然,不是用array_unique()函数也是可以实现去重的,下面这段代码是我在处理网站程序调用数据时,一篇文章属于同时属于两个栏目情况下,这篇文章被重复显示了,去重代码如下:
//去重操作 $temp=[]; foreach ($res as $key=>$val){ if(in_array($val['id'],$temp)){ unset($res[$key]); }else{ $temp[]=$val['id']; } }
先声明一个空数组用来临时储存判断条件,一个循环遍历下来,就可以把重复的数据unset出局了。
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com
上一篇:阿里云云短信开发文档整理
下一篇:阿里云短信验证实现分析