php数组排重

数组中重复项的去除

2010-07-28 15:29


一维数组的重复项

使用array_unique函数即可,使用实例如下:

<?php
                   $aa=array("apple","banana","pear","apple","wail","watermalon");
                   $bb=array_unique($aa);
                   print_r($bb);
                ?>

结果如下:Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。

二维数组的重复项

对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

<?php
            function assoc_unique($arr, $key)
             {
               $tmp_arr = array();
               foreach($arr as $k => $v)
              {
                 if(in_array($v[$key], $tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
                {
                   unset($arr[$k]);
                }
              else {
                  $tmp_arr[] = $v[$key];
                }
              }
            sort($arr); //sort函数对数组进行排序
            return $arr;
            }

$aa = array(
            array(‘id‘ => 123, ‘name‘ => ‘张三‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 124, ‘name‘ => ‘王五‘),
            array(‘id‘ => 125, ‘name‘ => ‘赵六‘),
            array(‘id‘ => 126, ‘name‘ => ‘赵六‘)
            );
            $key = ‘id‘;
            assoc_unique(&$aa, $key);
            print_r($aa);
            ?>

显示结果为:Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

㈡因内部的一维数组不能完全相同,而删除重复项

<?php
            function array_unique_fb($array2D){
                 foreach ($array2D as $v){
                     $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
                     $temp[] = $v;
                 }
                 $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
                foreach ($temp as $k => $v){
                    $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
                }
                return $temp;
            }

$aa = array(
            array(‘id‘ => 123, ‘name‘ => ‘张三‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 124, ‘name‘ => ‘王五‘),
            array(‘id‘ => 123, ‘name‘ => ‘李四‘),
            array(‘id‘ => 126, ‘name‘ => ‘赵六‘)
            );
            $bb=array_unique_fb($aa);
            print_r($bb)
            ?>

显示结果:Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )

时间: 2024-08-29 16:08:21

php数组排重的相关文章

数组排重

1 function pass(arr){ 2 var result=arr.filter(function(item,i){ 3 return arr.indexOf(item)==i; 4 }) 5 return result; 6 } 7 console.log(pass([0,1,2,1,3,5,2,2,2,'2','5']));//结果[0, 1, 2, 3, 5, "2", "5"] 利用数组的indexOf方法的特点,indexOf只要找到要查找项的索

javascript 数组排重

注:以下的方法都是来自前人的贡献和分享.我也是抛砖引玉.顺便提高一下自己的记忆力. Array.prototype.removeByValue = function(val) { for(var i=0; i<this.length; i++) { if(this[i] == val) { this.splice(i, 1); break; } }} 删除数组里面指定的数组. 调用方法: endData.removeByValue("3"); ------------------

强大的 数组排重

function going_load(){ net.ajax({ url:"going", data : { num:going_num }, success:function(data){ var _data = data.data, cur_data = [] _data.forEach(function (v,k){ var cur_id = v.id; if (!goingList['id_'+cur_id]){ goingList.push(v); goingList['i

自己写的数组排重+排序

var a = [11,2,3,4,5,7,8,4,33,2,6]; Array.prototype.sorts = function(){ var $this = this, i=1, arrays = $this.sort(function(a,b){return (a-b)>0}), len = arrays.length; if(len<2) return arrays; while(i < len){ if(arrays[i] == arrays[i-1]){ len--; a

网络爬虫之网页排重:语义指纹

引言:网络爬虫让我们高效地从网页获取到信息,但网页的重复率很高,网页需要按内容做文档排重,而判断文档的内容重复有很多种方法,语义指纹是其中比较高效的方法.本文选自<网络爬虫全解析--技术.原理与实践>. 现代社会,有效信息对人来说就像氧气一样不可或缺.互联网让有效信息的收集工作变得更容易.当你在网上冲浪时,网络爬虫也在网络中穿梭,自动收集互联网上有用的信息. 自动收集和筛选信息的网络爬虫让有效信息的流动性增强,让我们更加高效地获取信息.随着越来越多的信息显现于网络,网络爬虫也越来越有用. 不同

simhash文章排重

原文链接:https://www.cnblogs.com/baochuan/p/9089244.html 背景 提升产品体验,节省用户感知度.--想想,如果看到一堆相似性很高的新闻,对于用户的留存会有很大的影响. 技术方案1.信息指纹算法 思路:为每个网页计算出一组信息指纹(Fingerprint).比较两个网页相同信息指纹数量,从而判断内容的重叠性. 步骤: 1)提取网页正文信息特征(通常是一组词),并进行向量化处理(权重算法:如nf/df). 2)取前N个信息特征,进行MD5哈希,得到信息指

hadoop 排重优化

如果觉得有帮助的话就顶下吧 在统计的时候经常会用到排重,比如想统计每日登陆用户,但是一个用户一次多次登陆情况,或者一个产品被多少个用户下载..等等情况 截图一是我之前写的代码: 下面是我优化后代码 public static class ReduceTask extends Reducer<Text, Text, Text, IntWritable> {     private IntWritable rval = new IntWritable();     private Multiset

C#微信公众号开发系列教程五(接收事件推送与消息排重)

微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信公众号开发系列教程四(接收普通消息) C#微信公众号开发系列教程五(接收事件推送与消息排重) 在上一篇的博文中讲到,微信的消息可以大体分为两种类型,一种是包括:文本,语音,图片等的普通消息,另一种就是本篇要将的事件类型.包括:关注/取消关注事件,扫描带参数二维码事件,上报地理位置事件,自定义菜

数组除重和应用随机数进行随机点名

数组除重: 主要是建立一个新的空数组,然后利用中间状态.在遇到相同的数字时其中间状态为1此时跳出循环,若没有相同数字则将其压入空数组中.其代码为: <script> var arr1 = [1, 1, 2, 2, 3, 3, 4, 4, 6, 1]; var arr2 = []; for(var i = 0; i < arr1.length; i++) { var status = 0; for(var j = 0; j < arr2.length; j++) { if(arr1[