计算巨大TXT文件中的字符串输入

时间:2019-08-06 07:40:40

标签: php duplicates

我有一个.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

请指导在哪里寻找解决此问题的方法。 谢谢您的宝贵时间和建议。

2 个答案:

答案 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>";

这将非常慢。但是,如果您只需要使用一次代码,那并不是真正的问题。如果您更需要它,则需要找到一种加快它的方法。