$arr = ['This is text',
'This is also text',
'This is texts',
'These are texts' ];
similar_text($arr[0], $arr[2], $percent);
echo $percent; // 96
我有一个包含相似元素的数组,我需要运行该similar_text
函数并删除匹配度超过90%的元素。
如何将每个元素相互比较以删除相似的元素。嵌套foreach
循环还是有一种优雅的方法array_filter
?
您可以使用嵌套循环。
$result = array();
foreach ($arr as $i => $text1) {
$keep = true;
for ($j = $i + 1; $j < count($arr); $j++) {
$text2 = $arr[$j];
similar_text($text1, $text2, $percent);
if ($percent > 90) {
$keep = false;
break;
}
}
if ($keep) {
$result[] = $text1;
}
}
内部循环在外部循环的当前元素之后开始,因为先前的迭代已经将早期的元素与所有元素进行了比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句