Документация 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 6 = 54
Общее значение ASCII '60' = (54 + 48) = 102
Функции strcmp () говорят, что «60» «больше», чем «100», хотя кажется, что значение ASCII и длина строки «100» больше, чем «60»,
Может ли кто-нибудь объяснить, почему?
благодаря
strcmp()
возвращает разницу первого несогласованного символа между строками.
6
– 1
– 5.
Когда вы смотрите на него, вы, вероятно, не видите символов или цифр – просто цифры
Потому что strcmp()
останавливается при обнаружении первого strcmp()
. Следовательно, разница между значением ASCII '1' и значением ASCII '6'
6 на 5 "больше", чем 1. Это лексическое сравнение. Первый символ отличается, вот где сравнение останавливается.