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正则校验用户名介绍
Jul 19 PHP
PHP 日期加减的类,很不错
Oct 10 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
php学习笔记之面向对象编程
Dec 29 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
PHP执行普通shell命令流程解析
Aug 24 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
Zerg建筑一览
2020/03/14 星际争霸
php中利用explode函数分割字符串到数组
2014/02/08 PHP
php中session使用示例
2014/03/29 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php的dl函数用法实例
2014/11/06 PHP
php中static和const关键字用法分析
2016/12/07 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
tensorflow之并行读入数据详解
2020/02/05 Python
幼儿园保育员辞职信
2014/01/12 职场文书
物理教育专业求职信
2014/06/25 职场文书
网聊搭讪开场白
2015/05/28 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
浅谈JS的二进制家族
2021/05/09 Javascript
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL