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安全配置
Oct 09 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
PHP中$_SERVER的详细参数与说明介绍
Oct 26 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 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操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
使用Python处理BAM的方法
2018/09/28 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
使用python制作一个解压缩软件
2019/11/13 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
求职个人评价范文
2014/04/09 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
婚宴主持词
2015/06/30 职场文书