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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
十天学会php之第三天
Oct 09 PHP
php SQL防注入代码集合
Apr 25 PHP
php 在线打包_支持子目录
Jun 28 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
PHP中实现crontab代码分享
Mar 26 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
php实现的一段简单概率相关代码
May 30 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 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函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
JS二分查找算法详解
2017/11/01 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
python创建和使用字典实例详解
2013/11/01 Python
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python中str.format()详解
2017/03/12 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python实现自动发送邮件
2018/06/20 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python坐标线性插值应用实现
2019/11/13 Python
如何基于python操作json文件获取内容
2019/12/24 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
爱心捐书倡议书
2015/04/27 职场文书
小学语文教学反思范文
2016/03/03 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
python flask开发的简单基金查询工具
2021/06/02 Python
python中mongodb包操作数据库
2022/04/19 Python