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版(5)
Oct 09 PHP
PHP脚本的10个技巧(4)
Oct 09 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php构造函数实例讲解
Nov 13 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
浅析php原型模式
Nov 25 PHP
php实现的RSS生成类实例
Apr 23 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
php中使用websocket详解
Sep 23 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
使用svg实现动态时钟效果
2018/07/17 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
vue按需加载实例详解
2019/09/06 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python+django实现文件上传
2016/01/17 Python
深入理解python对json的操作总结
2017/01/05 Python
Python算术运算符实例详解
2017/05/31 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
硕士研究生自我鉴定范文
2013/12/27 职场文书
《风筝》教学反思
2014/04/10 职场文书
承诺书样本
2014/08/30 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
工地材料员岗位职责
2015/04/11 职场文书
承兑汇票延期证明
2015/06/23 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书