如何从文件中获取每行的数量?

时间:2016-04-11 03:00:20

标签: php file

我正在尝试读取txt文件并计算每行在文件中出现的次数。

heroes.txt:

Hero1, Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8
Hero1, Hero8, Hero9, Hero10, Hero11, Hero12, Hero13, Hero14
Hero1, Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8
Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8, Hero9
Hero1, Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8
Hero1, Hero8, Hero9, Hero10, Hero11, Hero12, Hero13, Hero14

预期产出:

Appeared 3x: Hero1, Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8
Appeared 2x: Hero1, Hero8, Hero9, Hero10, Hero11, Hero12, Hero13, Hero14
Appeared 1x: Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8, Hero9

到目前为止,我可以为1行执行此操作,我将其保存在变量中并使用它将其与所有其他行进行比较。现在我遍历每一行,并检查strpos()是否保存的变量行与我在while循环中读取的行相同。如果是,我增加我的计数器变量。

但正如你可以看到这个代码它只适用于1行,我还必须首先保存到变量。

那么如何修改我的代码,它会计算每行在文件中出现的次数?

代码:

<?php

    $herocombo = "Hero1, Hero2, Hero3, Hero4, Hero5, Hero6, Hero7, Hero8";

    $handle = fopen ("heroes.txt", "r");
    $counter = 0;

    while (!feof($handle))
    {
        $line = fgets($handle);
        $pos = strpos($line, $herocombo);

        if ($pos !== false)
        {
           $counter++;
        }
    }

    fclose ($handle);

    echo "Popular Combo:";
    echo "\n";
    echo "Appreared" . $counter ."times:" . $herocombo;
    echo "\n";

?>

1 个答案:

答案 0 :(得分:0)

您可以使用file()将文件读入数组,然后只需使用array_count_values()计算每行在文件中显示的次数。

代码:

<?php

    $lines = file("text.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    $result = array_count_values($lines);

    foreach($result as $v => $amount)
        echo "Appeared " . $amount . "x: " . $v . "<br />";

?>