数组元素之间的比较

oz
$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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章