Php 对一组相似的词进行分组
我有一个包含一串单词的数组。例如:Php 对一组相似的词进行分组,php,Php,我有一个包含一串单词的数组。例如: array( developer,develop,development,design,designer,designing ) 我希望能够将这些单词与其相似的单词组合在一起,这样我可以得到如下结果: array( array( develop, developer, development ), array( design, designer, designing ), ); 在PHP中,最好的方法是什么?您可能希望使用诸如“波特词干分析”之
array( developer,develop,development,design,designer,designing )
我希望能够将这些单词与其相似的单词组合在一起,这样我可以得到如下结果:
array(
array( develop, developer, development ),
array( design, designer, designing ),
);
在PHP中,最好的方法是什么?您可能希望使用诸如“波特词干分析”之类的技术提取每个单词的词干,以识别相似的单词,然后基于这些词干构建数组。您可以找到Porter词干分析器的PHP实现我想到了一种方法
$array = array( 'developer','develop','development','design','designer','designing' );
function matchWords(array $in,$pad='4')
{
$ret = array();
foreach ($in as $v) {
$sub = substr($v, 0, $pad);
if (!isset($ret[$sub])) {
$ret[$sub] = array();
}
$ret[$sub][] = $v;
}
return array_values($ret);
}
print_r(matchWords($array,4));
Array
(
[0] => Array
(
[0] => developer
[1] => develop
[2] => development
)
[1] => Array
(
[0] => design
[1] => designer
[2] => designing
)
)
这与数组值的
$pad
首字母匹配,并在其上创建一个键。您可以使用以下方法轻松完成此操作:
print\r($result)代码>将显示:
Array
(
[TF] => Array
(
[0] => developer
[1] => develop
[2] => development
)
[TS] => Array
(
[0] => design
[1] => designer
[2] => designing
)
)
我很难决定接受你的回答还是接受jackflash的回答。最后,我实际使用了提供的一个jackflash,所以我觉得我需要勾选它作为正确答案。然而,如果我能接受两个答案,我会的。我赞扬你对我的问题的迅速回答!谢谢在提出这个问题之前,我曾考虑过阻止,但可能是性能降低(我知道,过早优化是万恶之源)。无论如何谢谢你!PHP API(如果你可以这么说的话)一直让我感到惊讶。语言中包含的有用的“东西”数量惊人。是的,几乎所有东西都有一个函数。事实上,这是惊人的:)
Array
(
[TF] => Array
(
[0] => developer
[1] => develop
[2] => development
)
[TS] => Array
(
[0] => design
[1] => designer
[2] => designing
)
)