由换行符分隔的文件中最常出现的单词的数组。

时间:2011-07-29 16:42:41

标签: php arrays string explode

如何从换行符(\ n)分隔的文件中获取最常出现的单词数组?

示例文件:

person
person
dog
cat
person
lemon
orange
person
cat
dog
dog

文件中的文字没有特别的顺序。

我如何使其表现如下?

echo $ top [0]; //输出:人
echo $ top [1]; //输出:狗
等...

提前致谢!

2 个答案:

答案 0 :(得分:7)

$lines = file("theFile.txt");
var_dump(array_count_values($lines));

http://php.net/array_count_values

演示:http://ideone.com/zd82W

要从结果数组中获取第一个元素(出现次数最多的单词),可以执行以下操作:

$arr = array("person", "person", "cat", "dog", "cat");
$newArr = array_count_values($arr);
echo key($newArr); // "person"

演示:http://ideone.com/A0WPa

答案 1 :(得分:0)

我可能会使用这样的东西:

  • 逐行读取文件,每次检测到一个单词时为数组项添加+1,计算每个单词的次数
  • 对该数组进行排序。


没有真正测试,但这样的事情应该有用,我想:
(如果你的文件很大,应该比array_count_values()更好:不需要将整个文件加载到内存中)

$words = array();

$f = fopen('your_file', 'r');
while ($line = fgets($f)) {
    $word = trim($line);
    if (isset($words[$words])) {
        $words[$words]++;
    }
    else {
        $words[$words] = 1;
    }
}

asort($words);

现在,$words数组中的第一个键是最常用的单词 - 相应的值是您在文件中看到的次数。