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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP实现无限分类的实现方法
Nov 14 PHP
如何离线执行php任务
Feb 21 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP时间类完整代码实例
Feb 26 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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/11/08 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
Python中的类与对象之描述符详解
2015/03/27 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
浅析Python中的for 循环
2016/06/09 Python
Python中属性和描述符的正确使用
2016/08/23 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python 简单计算要求形状面积的实例
2020/01/18 Python
python 瀑布线指标编写实例
2020/06/03 Python
Pygame框架实现飞机大战
2020/08/07 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
质检部岗位职责
2013/11/11 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
现场施工员岗位职责
2014/03/10 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书