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
Dec 14 PHP
隐藏你的.php文件的实现方法
Mar 19 PHP
php连接mysql数据库代码
Mar 10 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
php自动加载方式集合
Apr 04 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
Javascript String.replace的妙用
2009/09/08 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python面向对象进阶学习
2019/05/21 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
我爱我校演讲稿
2014/05/21 职场文书
党支部三会一课计划
2014/09/24 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
期末复习计划
2015/01/19 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
LeetCode189轮转数组python示例
2022/08/05 Python