Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从文件中获取每行显示的数量?_Php_File - Fatal编程技术网

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

Php 如何从文件中获取每行显示的数量?,php,file,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

我试图读取一个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
到目前为止,我可以对保存在变量中的一行执行此操作,并使用它将其与所有其他行进行比较。现在,我检查每一行,并使用
strpos()
检查变量中保存的行是否与我当前在while循环中读取的行相同。如果是,则递增计数器变量

但正如您可以看到的,这段代码只对一行有效,我还必须先将它保存到一个变量中

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

代码:


您可以使用将文件读入数组,然后简单地使用来计算每行在文件中出现的次数

代码:


您可以使用将文件读入数组,然后简单地使用来计算每行在文件中出现的次数

代码:



谢谢您的帮助。将学习并了解代码。这就是我所需要的。@darksen你用你所拥有的知识在解决问题方面做得很好!您还可以使用
fgets()
,并将该行用作数组的键,在该数组中,您可以为每个外观增加值,这与我当前的回答相同:)谢谢。将学习并了解代码。这就是我所需要的。@darksen你用你所拥有的知识在解决问题方面做得很好!您还可以使用
fgets()
并将该行用作数组的键,在该数组中,您可以为每个外观增加值,这与我当前的答案相同:)
<?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";

?>
<?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 />";

?>