php数组去重实例及分析


Posted in PHP onNovember 26, 2013

一维数组的重复项:

使用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 ) 。

二维数组的重复项:

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

          <?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] => 赵六 )) 
PHP 相关文章推荐
PHP批量生成缩略图的代码
Jul 19 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
Dec 05 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
php实现微信公众平台账号自定义菜单类
Dec 02 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
PHP判断手机是IOS还是Android
Dec 09 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 PHP
php三维数组去重(示例代码)
Nov 26 #PHP
php导出word格式数据的代码实例
Nov 25 #PHP
php页面防重复提交方法总结
Nov 25 #PHP
php用header函数实现301跳转代码实例
Nov 25 #PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 #PHP
php使浏览器直接下载pdf文件的方法
Nov 15 #PHP
限制ckeditor上传图片文件大小的方法
Nov 15 #PHP
You might like
PHP常用代码
2006/11/23 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
python创建线程示例
2014/05/06 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
python 日志增量抓取实现方法
2018/04/28 Python
python实现飞机大战微信小游戏
2020/03/21 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Python之多进程与多线程的使用
2021/02/23 Python
送给程序员的20个Java集合面试问题
2014/08/06 面试题
vue实现倒计时功能
2021/03/24 Vue.js
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
行政求职信
2014/07/04 职场文书
单位推荐信范文
2015/03/27 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
redis protocol通信协议及使用详解
2022/07/15 Redis
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python