我有一个.txt
格式的大约7 GB的巨大文件,正在使用此线程Reading very large files in PHP处理。
.txt文件的示例:
cat
dog
dog
mouse
cat
bird
dog
cat
...
现在,我需要将此文件整理成类似以下内容的文件:
[cat] -> 3
[dog] -> 3
[mouse] -> 1
[bird] -> 1
请指导在哪里寻找解决此问题的方法。 谢谢您的宝贵时间和建议。
答案 0 :(得分:1)
您可以尝试使用array_count_values
因此,您必须将.txt转换为数组。主要的问题是我不知道文件大小是否会导致问题...
要将文件转换为数组,可以使用explode()
。
如果每次执行脚本时都需要此文件,则可以将所需的结果存储到数据库中。因此,您无需执行所有文件即可简单地获取所需的数据。
玩得开心:)
答案 1 :(得分:1)
这是一个非常基本的示例。它读取文本文件,一次读取一行,并计数相同的行。
<?php
$fn = fopen("my_very_large_file.txt","r");
$wordCounter = [];
while(!feof($fn)) {
$word = fgets($fn);
if (isset($wordCounter[$word])) {
$wordCounter[$word]++;
}
else {
$wordCounter[$word] = 1;
}
}
fclose($fn);
echo "<pre>";
print_r($wordCounter);
echo "</pre>";
这将非常慢。但是,如果您只需要使用一次代码,那并不是真正的问题。如果您更需要它,则需要找到一种加快它的方法。