php数组对百万数据进行排除重复数据的实现代码


Posted in PHP onJune 08, 2010

假如得到一个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里保存的就排重以后的结果,可以输出到文件,代码省略 
?>

仔细想想,不难发现,利用数组的这一特性还可以解决我们工作中的更多问题。
PHP 相关文章推荐
php中的MVC模式运用技巧
May 03 PHP
php中去除所有js,html,css代码
Oct 12 PHP
mysql总结之explain
Feb 27 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
php取出数组单个值的方法
Mar 12 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 PHP
腾讯QQ php程序员面试题目整理
Jun 08 #PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 #PHP
php的字符串用法小结
Jun 08 #PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 #PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 #PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 #PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 #PHP
You might like
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
决策树的python实现方法
2014/11/18 Python
Unicode和Python的中文处理
2017/03/19 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
详解Django CAS 解决方案
2019/10/30 Python
Python线程threading模块用法详解
2020/02/26 Python
python实现用户名密码校验
2020/03/18 Python
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
法学专业应届生求职信
2013/10/16 职场文书
青奥会口号
2014/06/12 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
股权转让协议范本
2014/12/07 职场文书
调解书格式范本
2015/05/20 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
python 算法题——快乐数的多种解法
2021/05/27 Python