我正在尝试读取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";
?>
您可以使用将文件读入数组,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 />";
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句