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+mysql留言本源码
Nov 11 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP、Java des加密解密实例
Apr 27 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
PHP文件与目录操作示例
Dec 24 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
全面理解闭包机制
2016/07/11 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python实现学生信息管理系统
2020/04/05 Python
Python多继承原理与用法示例
2018/08/23 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python OS模块实例详解
2019/04/15 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
python中的列表和元组区别分析
2020/12/30 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
物控部经理职务说明书
2014/02/25 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
法制宣传标语
2014/06/23 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
创业计划书之家教托管
2019/09/25 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android