Heim >Backend-Entwicklung >PHP-Tutorial >100万条记录的文本文件,取出重复数最多的前10条。该如何处理

100万条记录的文本文件,取出重复数最多的前10条。该如何处理

WBOY
WBOYOriginal
2016-06-13 11:47:511338Durchsuche

100万条记录的文本文件,取出重复数最多的前10条。
1. 100万条记录的文本文件,取出重复数最多的前10条。
示例文本:
098
123
234
789
……
234
678
654
123

求思路
------解决方案--------------------
导入到表中,然后用sql统计,不知道可行不。你可以试试。
------解决方案--------------------
explode //读取分割成数组
array_count_values//统计重复次数
arsort//排序,得到结果


------解决方案--------------------
可以对文本分块处理,记录结果,估计一次性读取的话,内存也吃不住...
------解决方案--------------------

$fp = fopen('文件', 'r');<br />while($buf = fgets($fp)) {<br />  $res[$buf]++;<br />}<br />fclose($fp);<br />arsort($res);<br />$res = array_keys(array_slice($res, 0, 10));<br />print_r($res);

当100万条记录半数是唯一的情况下,与下面的算法没有多大区别
$a = file('文件');<br />$res = array_count_values($a);<br />arsort($res);<br />$res = array_keys(array_slice($res, 0, 10));<br />print_r($res);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn