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中去除所有js,html,css代码
Oct 12 PHP
PHP输入流php://input介绍
Sep 18 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
smarty简单分页的实现方法
Oct 27 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
PHP实现的AES 128位加密算法示例
Sep 16 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
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python selenium如何设置等待时间
2016/09/15 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
在python中bool函数的取值方法
2018/11/01 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
考博专家推荐信模板
2013/12/02 职场文书
婚礼司仪主持词
2014/03/14 职场文书
娱乐节目策划方案
2014/06/10 职场文书
体育口号大全
2014/06/18 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
南京导游词
2015/02/03 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
cypress测试本地web应用
2022/06/01 Javascript
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript