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 无限极分类
Mar 27 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
php中file_exists函数使用详解
May 08 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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生成静态HTML页面最简单方法示例
2015/04/09 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jQuery实现预加载图片的方法
2015/03/17 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
深入浅析python定时杀进程
2016/06/06 Python
python中requests小技巧
2017/05/10 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python partial函数原理及用法解析
2019/12/11 Python
详解python itertools功能
2020/02/07 Python
python实现简单遗传算法
2020/09/18 Python
python实现计算图形面积
2021/02/22 Python
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
学员自我鉴定
2014/03/19 职场文书
安全例会汇报材料
2014/08/23 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
尼克胡哲观后感
2015/06/08 职场文书
小学教育见习总结
2015/06/23 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书