我只是想知道,这里发生了什么。如果我使用这个:
var_dump(similar_text('abcd', 'abcdefg', $percent)); //output: int 4
好的,abcd
在适当的地方,所以4是好结果。
让我们在第一个变量的开头改变a
和b
:
var_dump(similar_text('bacd', 'abcdefg', $percent)); //output: int 3
我曾2
或4
而非3
。有人可以向我解释它为什么会这样吗?
答案 0 :(得分:3)
similar_text()使用一种算法,该算法获取第二个字符串包含的第一个字符串中的第一个字母,对其进行计数,然后从第二个字符串中删除之前的字符。 这就是我们得到不同结果的原因。
第一个例子的迭代
'abcd' vs 'abcdefg' - (1) // 'a' match with 'a'
'bcd' vs 'bcdefg' - (1) // 'b' match with 'b'
'cd' vs 'cdefg' - (1) // 'c' match with 'c'
'd' vs 'defg' - (1) // 'd' match with 'd'
'' vs 'efg' - (0) // no match
Result = 4
第二个例子的迭代
'bacd' vs 'abcdefg' - (0) // b not match a
'bacd' vs 'bcdefg' - (1) // b match b
'acd' vs 'cdefg' - (0) // a not match c
'cd' vs 'cdefg' - (1) // c match c
'd' vs 'defg' - (1) // d match d
'' vs 'efg' - (0) // not match with any elemennt
Result = 3