2016-05-31 20 views
5

Ich frage mich nur, was hier passiert. Wenn ich dies mit:asiehe_text gibt kein erwartetes Ergebnis

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

Das ist ok, abcd an der richtigen Stelle, so ist 4 gutes Ergebnis.

Lassen Sie uns ändern a und b am Anfang des ersten variabl:

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

I excpected zu 2 oder 4 aber nicht 3. Kann mir das jemand erklären warum?

+0

Seine Ähnlichkeit in Prozent, es keine Übereinstimmung Anzahl der Zeichen – Thamilan

+0

nein, Prozentsatz in '$ percent' variabel sein, was Ich habe es hier nicht benutzt. – vaso123

+2

Es gibt einige Diskussionen darüber in dieser Frage: http://StackOverflow.com/Questions/14136349/how-does-similar-text-work. Lange Rede, kurzer Sinn, es tut wahrscheinlich nicht das, was du denkst. – iainn

Antwort

3

similar_text() verwendet einen Algorithmus, der den ersten Buchstaben in der ersten Zeichenfolge der zweiten Zeichenfolge enthält, diese zählt und die Zeichen davor aus der zweiten Zeichenfolge verwirft. Dies ist der Grund, warum wir unterschiedliche Ergebnisse erhalten.

Iteration für das erste Beispiel

'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 

Iteration für zweites Beispiel

'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

Ich werde diesen Beitrag machen, denke ich auch. –

+0

Ich denke, das ist der Grund, was denkst du? – Shin

+0

können Sie mir bitte erklären, warum ''cd' vs 'cdefg' - (0)' während in der ersten Iteration ist es 1, und warum ''' vs 'efg'' ist 1 in der zweiten und 0 in der zuerst? Und warum "bacd" vs "abcdefg" - (1) 'in der Sekunde? – vaso123

Verwandte Themen