php去除数组中重复数据


Posted in PHP onNovember 18, 2014

废话不多说,直接上代码

/**

         * 给数组排重

         * 与array_unique函数的区别:它要求val是字符串,而这个可以是数组/对象

         *

         * @param unknown_type $arr 要排重的数组

         * @param unknown_type $reserveKey 是否保留原来的Key

         * @return unknown

         */

        static function m_ArrayUnique($arr, $reserveKey = false)

        {

            if (is_array($arr) && !empty($arr))

            {

                foreach ($arr as $key => $value)

                {

                    $tmpArr[$key] = serialize($value) . '';

                }

                $tmpArr = array_unique($tmpArr);

                $arr = array();

                foreach ($tmpArr as $key => $value)

                {

                    if ($reserveKey)

                    {

                        $arr[$key] = unserialize($value);

                    }

                    else

                    {

                        $arr[] = unserialize($value);

                    }

                }

            }

            return $arr;

        }

代码很简单,却非常的实用,有需要的小伙伴可以直接拿去用的。

另附上其他网友的解决办法

<?php

$input = array("a" => "green","", "red","b" => "green", "","blue", "red","c" => "witer","hello","witer");

//$result = array_unique($input); //去除重复元素

$result = a_array_unique($input);   //只留下单一元素

foreach($result as $aa)

{

echo $aa."<br />";

}

function multi_unique($array) {

   foreach ($array as $k=>$na)

       $new[$k] = serialize($na);

   $uniq = array_unique($new);

   foreach($uniq as $k=>$ser)

       $new1[$k] = unserialize($ser);

   return ($new1);

}
function a_array_unique($array)//写的比较好

{

   $out = array();

   foreach ($array as $key=>$value) {

       if (!in_array($value, $out))

{

           $out[$key] = $value;

       }

   }

   return $out;

} 

?>

PHP数组去除重复项 有个内置函数array_unique (),但是php的 array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组 的 array_unique函数

function unique_arr($array2D,$stkeep=false,$ndformat=true)

{

    // 判断是否保留一级数组键 (一级数组键可以为非数字)

    if($stkeep) $stArr = array_keys($array2D);

    // 判断是否保留二级数组键 (所有二级数组键必须相同)

    if($ndformat) $ndArr = array_keys(end($array2D));

    //降维,也可以用implode,将一维数组转换为用逗号连接的字符串

    foreach ($array2D as $v){

        $v = join(",",$v); 

        $temp[] = $v;

    }

    //去掉重复的字符串,也就是重复的一维数组

    $temp = array_unique($temp); 

    //再将拆开的数组重新组装

    foreach ($temp as $k => $v)

    {

        if($stkeep) $k = $stArr[$k];

        if($ndformat)

        {

            $tempArr = explode(",",$v); 

            foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;

        }

        else $output[$k] = explode(",",$v); 

    }

    return $output;

}

演示:

$array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); 
print_r($array2D); 
print_r(unique_arr($array2D,true));

PHP 相关文章推荐
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
PHP输出两个数字中间有多少个回文数的方法
Mar 23 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
四个常见html网页乱码问题及解决办法
Sep 08 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
Laravel框架实现利用监听器进行sql语句记录功能
Jun 06 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
如何通过PHP实现Des加密算法代码实例
May 09 PHP
详解PHP Swoole与TCP三次握手
May 27 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 #PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 #PHP
php单态设计模式(单例模式)实例
Nov 18 #PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 #PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 #PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 #PHP
一个比较不错的PHP日历类分享
Nov 18 #PHP
You might like
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
Symfony控制层深入详解
2016/03/17 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python numpy存取文件的方式
2020/04/01 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
教师个人年终总结
2015/02/11 职场文书
保护环境的宣传语
2015/07/13 职场文书
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript