2016-05-31 5 views
5

Мне просто интересно, что здесь происходит. Если я использую это:Similar_text не дает ожидаемого результата

var_dump(similar_text('abcd', 'abcdefg', $percent)); //output: int 4 

То хорошо, abcd в нужном месте, так что 4 является хорошим результатом. Изменение

Давайте a и b в начале первого variabl:

var_dump(similar_text('bacd', 'abcdefg', $percent)); //output: int 3 

Я excpected к 2 или 4 но не 3. Может кто-нибудь объяснить мне, почему?

+0

Его сходство в процентах, а не количество символов, оно соответствует – Thamilan

+0

нет, процент будет в '$ percent' переменный, то, что Я не использовал здесь. – vaso123

+2

Обсуждаются некоторые вопросы по этому вопросу: http://stackoverflow.com/questions/14136349/how-does-similar-text-work. Короче говоря, это, вероятно, не так, как вы думаете. – iainn

ответ

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 
+0

Я собираюсь сделать этот пост, я также думаю об этом. –

+0

Я думаю, что это причина, что вы думаете? – Shin

+0

Не могли бы вы объяснить мне, пожалуйста, почему '' cd 'vs' cdefg '- (0) ', а на первой итерации - 1, и почему' '' vs 'efg'' равно 1 во втором, а 0 в первый? И почему '' bacd 'vs' abcdefg '- (1) 'во втором? – vaso123

Смежные вопросы