12 Stimmen

Warum funktioniert "echo strcmp('60', '100');" in der php-Ausgabe 5?

Die PHP-Dokumentation zu dieser Funktion ist etwas spärlich und ich habe gelesen, dass diese Funktion ASCII-Werte vergleicht, also...

echo strcmp('hello', 'hello');
//outputs 0 as expected - strings are equal.
echo '<hr />';

echo strcmp('Hello', 'hello');
//outputs -32, a negative number is expected as 
//uppercase H has a lower ASCII value than lowercase h.
echo '<hr />';

echo strcmp('60', '100');
//outputs 5.

Das letzte Beispiel verwirrt mich. Ich verstehe nicht, warum es eine positive Zahl ausgibt.

  • ASCII-Wert von 0 = 48

  • ASCII-Wert von 1 = 49

  • ASCII-Wert von 6 = 54

  • Gesamter ASCII-Wert von "60" = (54 + 48) = 102

  • Gesamter ASCII-Wert von "100" = (49 + 48 + 48) = 145

Die strcmp()-Funktion sagt, dass '60' "größer" ist als '100', obwohl der ASCII-Wert anscheinend y Stringlänge von '100' ist größer als '60'

Kann jemand erklären, warum?

Gracias

13voto

wallyk Punkte 55322

strcmp() gibt die Differenz des ersten nicht übereinstimmenden Zeichens zwischen den Zeichenketten zurück.

6 - 1 ist 5.

Wenn Sie es betrachten, sehen Sie wahrscheinlich keine Buchstaben oder Ziffern, sondern nur die Zahlen

8voto

Madara's Ghost Punkte 165354

Denn strcmp() bleibt bei der ersten gefundenen Differenz stehen. Also die Differenz zwischen dem ASCII-Wert '1' und dem ASCII-Wert '6'

5voto

deceze Punkte 489288

6 ist 5 "größer" als 1. Dies ist ein lexikalischer Vergleich. Das erste Zeichen ist anders, da hört der Vergleich auf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X