我有一堆單詞。例如:將一組相似單詞分組
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中做到這一點的最好辦法?
您可以輕鬆地使用metaphone()
做到這一點:
$result = array();
foreach ($array as $word) {
$result[metaphone($word, 2)][] = $word;
}
print_r($result);
將顯示:
Array
(
[TF] => Array
(
[0] => developer
[1] => develop
[2] => development
)
[TS] => Array
(
[0] => design
[1] => designer
[2] => designing
)
)
一個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
第一個字母相匹配,並且在其上創建一個關鍵。
我很難決定接受你的答案或者傑克。最後,我實際上使用了提供的一個jackflash,所以我覺得我需要把它作爲正確的答案。但是,如果我能夠接受兩個答案,我會的。我讚揚你對我的問題的快速回應!謝謝! – Luke
PHP API(如果你可以稱它的話)讓我驚歎不已。構建在語言中的有用「東西」數量非常驚人。 – Luke
是的,幾乎所有東西都有一個功能。其實這是驚人的:) – Carlos