我正在使用similar_text()函数来计算两个字符串之间的相似性。
$s1 = 'God is great';
$s2 = 'I too';
similar_text($s1, $s2, $result);
echo $result;
它给出输出11.764705882353 但是当我交换字符串的位置时,它会给出不同的输出:
$s1 = 'God is great';
$s2 = 'I too';
similar_text($s2, $s1, $result);
echo $result;
它给出输出23.529411764706 为什么会这样?
答案 0 :(得分:1)
该功能根据参数顺序使用不同的逻辑。请查看此问题How does similar_text work?
答案 1 :(得分:0)
算法获取第二个字符串包含的第一个字符串中的第一个字母,对其进行计数,然后从第二个字符串中删除之前的字符。这就是为什么它会错过中间的字符,而这就是改变字符顺序时导致差异的原因。
答案 2 :(得分:0)
我不完全确定为什么similar_text() produces different results,同时,你可以使用levenshtein(),这将产生连贯的结果并做你需要的,即:
echo levenshtein ($s2, $s1);
# 11
echo levenshtein ($s1, $s2);
# 11