我在一个文本文件中有一个列表,其中包含英语中使用的前 1000 个单词。每行有一个最多 50 个单词的列表,如下所示:
the,stuff,is,thing,hi,bye,hello,a,stuffs
cool,free,awesome,the,pray,is,crime
等。
我需要使用该文件作为输入编写代码,以制作一个输出文件,其中包含一组单词对,这些单词对至少出现在五十个不同的列表中。例如,在上面的例子中,THE & IS 一起出现了两次,但每隔一对只出现一次。
我无法存储所有可能的单词对,所以没有蛮力。
我正在努力学习这门语言,但我一直坚持这本书的练习。请帮忙。对此的任何逻辑、指导或代码都会对我有所帮助。
这就是我到目前为止所拥有的。它没有达到预期的效果,但我被困住了:
代码:
//open the file
$handle = fopen("list.txt", 'r');
$count = 0;
$is = 0;
while(!feof($handle)) {
$line = fgets($handle);
$words = explode(',', $line);
echo $count . "<br /><br />";
print_r($words);
foreach ($words as $word) {
if ($word == "is") {
$is++;
}
}
echo "<br /><br />";
$count++;
}
echo "Is count: $is";
//close the file
fclose($handle);
$fp = fopen('output.txt', 'w');
fwrite($fp, "is count: " . $is);
fclose($fp);
这是我想出的,但我认为它太臃肿了:
计划:
检查数组的第一个值$words
将
值存储到$cur_word
存储$cur_word
中作为数组中的键($compare
)并将
计数器(行号)存储为该键的值,
此时
它将为1如果然后
将值与键一起放入,就
好像数组至少有50个值然后继续
否则转到数组的下一个值
如果它有50个值然后
转到下一个值并做同样的事情
比较两个列表查看
至少有 50 个匹配的值,然后将
单词附加到输出文件 $cur_word
$compare
$cur_word
$words
对每个单词重复这个过程