Подтвердить что ты не робот

Почему "echo strcmp (" 60 "," 100 "); в php-выходе 5?

Документация PHP по этой функции немного разрежена, и я прочитал, что эта функция сравнивает значения ASCII, поэтому...

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.

Последний пример меня смущает. Я не понимаю, почему он выводит положительное число.

  • ASCII Значение 0 = 48
  • ASCII Значение 1 = 49
  • Значение ASCII 6 = 54

  • Общее значение ASCII '60' = (54 + 48) = 102

  • Общее значение ASCII '100' = (49 + 48 + 48) = 145

Функции strcmp() говорят, что "60" "больше", чем "100", хотя кажется, что значение ASCII и длина строки "100" больше, чем "60"

Может ли кто-нибудь объяснить, почему?

Спасибо

4b9b3361

Ответ 1

strcmp() возвращает разницу первого несогласованного символа между строками.

6 - 1 равно 5.

Когда вы смотрите на него, вы, вероятно, не видите символов или цифр - просто цифры

Ответ 2

Потому что strcmp() останавливается при обнаружении первой разницы. Следовательно, разница между значением ASCII '1' и значением ASCII '6'

Ответ 3

6 на 5 "больше", чем 1. Это лексическое сравнение. Первый символ отличается тем, что сравнение останавливается.