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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
php基础知识:类与对象(1)
Dec 13 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
Symfony2创建页面实例详解
Mar 18 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
详解vuex的简单使用
2018/03/12 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Python中生成Epoch的方法
2017/04/26 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
python 检查文件mime类型的方法
2018/12/08 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
上海微创软件面试题
2012/06/14 面试题
新锐科技Java程序员面试题
2016/07/25 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
医学专业职业生涯规划范文
2014/02/05 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
诉前财产保全担保书
2014/05/20 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python