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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
从wamp到xampp的升级之路
Apr 08 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 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中sprintf与printf函数用法区别解析
2014/02/17 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
php实现的双色球算法示例
2017/06/20 PHP
jquery 回车事件实现代码
2011/08/23 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python堆排序原理与实现方法详解
2018/05/11 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
tensorflow如何批量读取图片
2019/08/29 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
化学实验员岗位职责
2013/12/28 职场文书
班主任评语大全
2014/04/26 职场文书
敬老模范事迹
2014/05/21 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android