我有一次面试,我可以使用任何我想使用的语言来计算每个单词在文本文件中出现的次数。
我在 C 中通过读入每个单词并将其添加到树结构中来解决它 - 如果单词在结构中已准备好,算法将向我添加到节点中的计数器添加一个。
那个人说我有很多代码而且很乱,并说我可以用大约 3 行代码在 PHP 中完成。
我开始使用 将explode()
字符串分成单词数组,但之后就卡住了。
有谁知道这可以用几行代码在 PHP 中完成吗?
我有一次面试,我可以使用任何我想使用的语言来计算每个单词在文本文件中出现的次数。
我在 C 中通过读入每个单词并将其添加到树结构中来解决它 - 如果单词在结构中已准备好,算法将向我添加到节点中的计数器添加一个。
那个人说我有很多代码而且很乱,并说我可以用大约 3 行代码在 PHP 中完成。
我开始使用 将explode()
字符串分成单词数组,但之后就卡住了。
有谁知道这可以用几行代码在 PHP 中完成吗?
一个简单的方法是用 读取完整的文件作为字符串file_get_contents()
,将其拆分为空格,然后运行生成的数组array_count_values()
$file = file_get_contents( 'text_file.txt');
$array = preg_split( '/\s+/', $file);
$counts = array_count_values( $array);
完毕!
但是,这并不完美,因为标点符号会打乱您的计数。因此,正如 Mark Baker 所指出的,我们可以回到我原来的方法,用 获取文件中的所有单词str_word_count()
,然后通过 运行该数组array_count_values()
:
$file = file_get_contents( 'text_file.txt');
$words = str_word_count( $file, 1);
$counts = array_count_values( $words);