首页 > 语言 > 关键词 > 索引最新资讯 > 正文

如何利用php数组对百万数据进行排重

2010-06-04 08:18 · 稿源:www.xhttp.cn

在平时的工作中,经常接到要对网站的会员进行站内信、手机短信、email进行群发信息的通知,用户列表一般由别的同事提供,当中难免会有重复,为了避免重复发送,所以我在进行发送信息前要对他们提供的用户列表进行排重,下面我以uid列表来讲讲我是如何利用php数组进行排重的。

假如得到一个uid列表,数量在百万行以上,格式如下:

10001000

10001001

10001002

................

10001000

................

10001111

其实利用php数组的特性,很好进行排重,我们先来看一下php数组的定义:PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。数组元素的值也可以是另一个数组。树形结构和多维数组也是允许的。

在php的数组中,键(keys)也称为索引,具有唯一性,我们正可以利用这一特性进行排重,示例代码如下:

<?php
//定义一个数组,用于存放排重后的结果
$result = array();
//读取uid列表文件
$fp = fopen('test.txt', 'r');

while(!feof($fp))
{
    $uid = fgets($fp);
    $uid = trim($uid);
    $uid = trim($uid, "\r");
    $uid = trim($uid, "\n");

    if($uid == '')
    {
        continue;
    }
    //以uid为key去看该值是否存在
    if(empty($result[$uid]))
    {
        $result[$uid] = 1;
    }
}

fclose($fp);

//将结果保存到文件
$content = '';
foreach($result as $k => $v)
{
    $content .= $k."\n";
}
$fp = fopen('result.txt', 'w');
fwrite($fp, $content);
fclose($fp);
?>
20多行代码,就可以对百万以上的数据进行排重,效率也不错,非常实用。手机号、email,也可以采用这种方式进行排重。

还有,这可方法还可以用于两个文件进行排重的工作,如果你有两个uid列表文件,格式和上面的uid列表一样,示例程序如下:

<?php
//定义数组,用于存放排重后的结果
$result = array();
//读取第一个uid列表文件,放入$result_1
$fp = fopen('test_1.txt', 'r');

while(!feof($fp))
{
    $uid = fgets($fp);
    $uid = trim($uid);
    $uid = trim($uid, "\r");
    $uid = trim($uid, "\n");

    if($uid == '')
    {
        continue;
    }
    //以uid为key写入$result,如有重复就会覆盖
    $result[$uid] = 1;
}

fclose($fp);

//读取第二个uid列表文件,并进行排重操作
$fp = fopen('test_2.txt', 'r');
while(!feof($fp))
{
    $uid = fgets($fp);
    $uid = trim($uid);
    $uid = trim($uid, "\r");
    $uid = trim($uid, "\n");

    if($uid == '')
    {
        continue;
    }
    //以uid为key去看该值是否存在
    if(empty($result[$uid]))
    {
        $result[$uid] = 1;
    }
}
fclose($fp);

//$result里保存的就排重以后的结果,可以输出到文件,代码省略
?>

仔细想想,不难发现,利用数组的这一特性还可以解决我们工作中的更多问题。

By xhttp.cn 整理:http://www.xhttp.cn/2010/05/1

  • 相关推荐
  • 大家在看
  • 用php源码搭建二维码加密支付平台

    今天给大家介绍的项目-"用php源码搭建二维码加密支付平台",可以说,有一定的技术门槛,有一定的壁垒,因为需要搭建网站并且运营。正是因为有一定的门槛,需要学习和准备一些东西,才能挡住大多数用户的进入,才能长久的赚取利润。这些技术门槛,和需要准备的一些东西,我今天会详细的,手把手的教大家,如果你肯学习,并且有一定的网络基础,我相信可以很快突破难点,搭建成功。一旦搭建成功,运用一些推广的手段,后期

  • iOS 14曝光:苹果要为系统改名 重叫iPhone OS?

    本周早些时候,苹果已经给出预告称,将在北京时间6月23日凌晨1点,在线上举行WWDC 2020开发者大会,由于疫情原因,让这场大会首次搬到了线上举行,当然并不是现场直播,而是之前准备录播,国内用

  • 数据:最近四年推出的 iPhone 中有 92% 运行iOS 13

    据Macrumors报道,根据最新的iOS安装数据显示,目前所有iPhone和iPod touch设备中有81%运行iOS 13,有73%的iPad运行iPadOS。

  • 智能网关内嵌花生壳PHTunnel,无公网IP实现数据远程采集与传输!

    随着花生壳PHTunnel的免费开放,越来越多的物联网智能设备内嵌了花生壳内网穿透,为没有公网IP的用户,带去了方便、高效、稳定的内网穿透服务,实现了各类基于域名的互联网应用服务的外网访问。北京微控工业网关技术有限公司旗下的智能网关产品,广泛应用于光伏电站、智能医院、智能家居、石油化工、智能交通、风力发电、污水处理等领域,通过集成花生壳PHTunnel实现了设备的远程升级维护、数据远程采集与传输、远程监测与控制、远

  • 智能变革:英特尔HPC高性能计算与AI人工智能解决方案和实例

    在竞争日益激烈的环境中,数据中心作为传统信息化的基础,伴随着全面AI时代与5G、物联网的不断临近,企业希望获得出色的模拟和建模、人工智能(AI)和大数据分析功能,以便取得突破性的发现与创新,而高性能计算(HPC)基础设施能够为这些工作负载带来优势。 企业如果想在相同的 HPC 基础设施中运行 HPC、大数据分析和 AI 工作负载,优化的资源调度降低计算成本需要一个全面的融合HPC和AI集群的解决方案。 英特尔? 精选解决方案基于英

  • 现在买iPhone 11还是等iPhone 12?李楠:等iP12

    一年一度的618将于今晚0点正式开启。6月17日消息,一位知友在知乎提问:现在买iPhone 11还是等iPhone 12?目前iPhone 11在各大平台有大幅降价,京东平台iPhone 11 64GB版到手价4599元,拼多

  • 苹果将追踪定位iPhone抢夺者:定位iPhone技术介绍

    据 TMZ 报道称,5 月 25 日 George Floyd 遭遇明尼阿波利斯暴力执法而死亡。一周之后,美国多地发生了激烈的抗议示威活动,苹果 CEO 蒂姆·库克也曾在第一时间表达了对受害者的同情,以及对暴力伤害行为的反对。

  • 京东iPhone疯狂降价:iPhone 11加899元全额换购iPhone 12

    6月1日开始,各大电商正式进入618大促。近日,京东官方宣布,自6月1日起,iPhone 11直降900元,到手价仅为4599元,同时还有iPhone 8 Plus领券立减600元、XS Max抢券立减500元等特别优惠,价格史

  • iPhone13机模曝光 手感类似iPhone5S

    近日日本网站Mac Otakara曝光一个5.5 英寸iPhone的3D打印模型,这款iPhone将于 2021 年上市,在苹果的命名中也就是iPhone13系列手机,该网站表示这款机模仅是正在开发的原型机,未来有可能会有变动。

  • 趁618买iPhone 11还是等iPhone 12?李楠给出了他的答案

    虽然如今的618的狂欢早已不仅局限于6月18日这一天,而是几乎贯穿6月一整个月,但不可否认,这一天仍将是其中所有人最期盼的狂欢高潮所在。而在热度最高的手机领域,苹果无疑是焦点中的焦点。正如此前预料的,各大平台以iPhone 11系列为代表的多款机型放出了极具竞争力的价格,牢牢吸引了无数用户的目光。

  • iPhone照片怎么添加标题

    苹果iPhone在iOS14系统中加入了给照片添加标题的新功能,这个功能具体是怎么使用呢,以下我们来看下照片添加标题的具体操作方法。

  • 比iPhone 11便宜不少!四款iPhone 12集体现身:命名曝光

    此前,多方权威信源显示,今秋苹果将推出四款iPhone 12机型,包括一款5.4英寸、两款6.1英寸以及一款6.7英寸机型。日前,荷兰T-mobile官网率先公布了iPhone 12的全系命名。相关页面信息显示,今

  • 老外大赞iPhone 12系列:全面屏版iPhone 4外形史上最佳

    综合当前比较可靠的消息,今年秋季苹果的年度旗舰iPhone 12系列将依旧提供iPhone 12、iPhone 12Max和iPhone 12 Pro、iPhone 12 Pro Max两个版本共四款机型,而且Wedbush证券最新报道称,iPhone 12的发行将重回“正轨”,依旧选择9月份发布。现在有最新消息,近日有油管博主进一步放出了据称是该机机模的“上手视频”。据国外知名油管博主@iup_date 最新发布的消息显示,与此前曝光的消息基本一致,全新的iPhone 12系列?

  • iPhone13机模曝光 苹果iPhone13机模高清大图

    iPhone12 即将发布,而目前有关于下下代iPhone13 的消息也已经曝光。Macrumors报道,日本网站Mac Otakara近日曝光了一个5. 5 英寸iPhone的3D打印模型,据称该款iPhone将于 2021 年上市。

  • 快手的三重门

    5 月 27 日,快手与京东签署战略合作协议,表示将在 618 大促期间展开深度合作,这已经是双方继去年 618 之后的第二次合作。5 月 29 日,快手官方宣布周杰伦将于 3 天之后入驻快手,这是这位华语乐坛天王首次开通中文社交平台账号,因此该话题毫无悬念地引爆网络。

  • iPhone小组件怎么叠放

    苹果iPhone在iOS14系统中加入了桌面小组件国内,用户可以将应用程序的某个功能单独放置到桌面中,让用户快速启动查看,如何在iPhone上添加桌面小组件呢,以及将小组件进行叠放设置,以下我们来看下具体的操作方法。

  • iPhone画中画怎么开启

    苹果iPhone画中画功能怎么开启,想要使用画中画需要进行什么样的操作步骤,这里我们来一起了解下苹果iOS14画中画功能的开启方法。

  • 哪些iPhone支持iOS14

    iOS14系统预计在6月底的苹果WWDC开发者大会上正式公布,这个新的系统可以支持哪些iPhone手机更新呢,以下我们提前来看下iOS14系统支持的iPhone型号。

  • 苹果将追踪定位iPhone抢夺者

    据外媒报道,华盛顿、洛杉矶、旧金山、纽约和费城等多家苹果商店受到袭击或破坏,抢劫者偷走了所有可用产品。苹果公司警告,被抢劫的手机和电脑等产品均不可被重置,并将追踪定位不法者的位置发送到当地执法部门。

  • 新iPhone发布将延迟 苹果iPhone12配置、准确发布日期介绍

    据彭博社报道称,博通首席执行官 Hock Tan 在当地时间周四与分析师举行的财报电话会议上讨论了「北美大型手机」客户的「主要产品周期延迟」。预计 iPhone 12 系列的发布时间将由常规的 9 月推迟到今年第四季度。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议