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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
关于时间计算的结总
Dec 06 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
PHP的PDO连接讲解
Jan 24 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 PHP
laravel7学习之无限级分类的最新实现方法
Sep 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
php的4种常见运行方式
2015/03/20 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
js的三种继承方式详解
2017/01/21 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
uni-app实现点赞评论功能
2019/11/25 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
Python数据结构之翻转链表
2017/02/25 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
利用python修改json文件的value方法
2018/12/31 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
python实现自动打卡的示例代码
2020/10/10 Python
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
购房意向书
2014/04/01 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技