我需要得到一个加载txt文件的最终结果,计算每个单词的使用次数并回显结果。下面给出了使用的代码。寻找有价值的建议...
<?php
$text = fopen("words.txt", "r");
$textarray = explode(" ",$text);
foreach($textarray as $numbers)
{
if(isset($str_count[$numbers]))
$str_count[$numbers]++;
else
$str_count[$numbers]=1;
}
foreach($str_count as $words => $numbers)
echo $words.": ".$numbers."<br>";
?>
答案 0 :(得分:1)
你几乎得到了它,但有一些事情需要改变。
fopen()
函数打开一个文件(在本例中为读取)返回一个资源(文件的句柄),我们用它来读取文件。它不会返回文件内容。如果您需要更多信息,请查看fopen() documentation。
为了简单起见,我将fopen()
替换为file_get_contents()
。
其次,正如@DaveRandom所建议的那样,将explode()
替换为preg_split('/\s+/', $text);
是个好主意,因为这样可以处理多个空格。当然,这不是必要的,但建议。
最后,我发现使用preg_split('/\s+/', $text)
脚本有一个空元素,因此我添加了一个if
语句以确保我们不添加空字符串。此步骤也不是必需的,因此如果您不需要它,只需删除第一个if语句。
以下是修改后的源代码:
<?php
$text = file_get_contents('words.txt');
$textarray = preg_split('/\s+/', $text);
foreach($textarray as $numbers)
{
if(empty($numbers)) {
continue;
}
if(isset($str_count[$numbers]))
$str_count[$numbers]++;
else
$str_count[$numbers]=1;
}
foreach($str_count as $words => $numbers)
echo $words.": ".$numbers."<br>";
?>