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备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
Thinkphp中import的几个用法详细介绍
Jul 02 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
关于PHP求解三数之和问题详析
Nov 09 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分页代码学习示例分享
2014/02/20 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
用python实现对比两张图片的不同
2018/02/05 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
Python如何实现的二分查找算法
2020/05/27 Python
python em算法的实现
2020/10/03 Python
社区居务公开实施方案
2014/03/27 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
医学求职自荐信
2014/06/21 职场文书
交通违章检讨书
2014/09/21 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
2014年村官工作总结
2014/11/24 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
css3 选择器
2022/05/11 HTML / CSS