我想要一个长字符串(数十万个字符)并将其与一组关键字进行比较,以确定数组中哪个关键字被提及的次数多于其他关键字。
这看起来很简单,但我有点担心strstr
正在执行此任务。
我应该以不同的方式吗?
谢谢,
答案 0 :(得分:2)
我认为你可以通过一次扫描以不同的方式做到这一点,如果你以正确的方式做到这一点,它可以在性能上给你带来显着的改善。
创建一个关联数组,其中键是关键字,值是出现次数。
逐字逐句读取字符串,我的意思是取一个单词并将其放在一个变量中。然后,将它与所有关键字进行比较(有几种方法可以执行此操作,您可以使用isset
查询关联数组)。找到关键字后,递增其计数器。
我希望PHP使用类似hashmap的东西来实现关联数组......
答案 1 :(得分:0)
以线性方式解析单词。对于您遇到的每个单词,在您要查找的单词的关联数组中增加其计数(当然,跳过您不感兴趣的单词)。这将比strstr快得多。