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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
如何在PHP中使用Oracle数据库(2)
Oct 09 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
php去除HTML标签实例
Nov 06 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
php异步多线程swoole用法实例
Nov 14 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
php读取csv文件并输出的方法
Mar 14 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
php反射学习之依赖注入示例
Jun 14 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函数
2008/10/03 PHP
javascript 打印页面代码
2009/03/24 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python迭代器实例简析
2014/09/25 Python
python中zip和unzip数据的方法
2015/05/27 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
django的登录注册系统的示例代码
2018/05/14 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python实现简单俄罗斯方块
2020/03/13 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
实习生个人找工作的自我评价
2013/10/30 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
大专生的学习自我评价
2013/12/04 职场文书
2014年管理工作总结
2014/11/22 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
2016年端午节寄语
2015/12/04 职场文书