Intereting Posts
Отправка почты с помощью PHPMailer через прокси-сервер? Как изменить разрешенную память выделенной памяти? Codeigniter с использованием базы данных доступа ms Является ли это лучшим подходом к созданию контрольного журнала? конвертировать в UTC без изменения настроек часового пояса php Уязвимое расширение Doctrine 'on change' не работает Каков наилучший способ создания «многоязычного» скрипта в php? Динамическое заполнение выпадающего списка с использованием данных JSON найти все URL (ссылки) в тексте с помощью php Удалить корневой каталог из строки пути каталога – PHP Как получить доступ к значениям cookie на разных путях одного домена с помощью PHP? Покажите один CSS-стиль, если IE и другой, если ff или chrome в .css, используя PHP SET NAMES utf8 в MySQL? Является ли Symfony лучшим выбором, чем Zend для магазина веб-разработки (10+), потому что это полноценная структура стека? Должен ли я продолжать переподключение к mysql в PHP?

Почему «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»,

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

благодаря

Solutions Collecting From Web of "Почему «echo strcmp ('60», «100»), «в php-выходе 5?"

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

61 – 5.

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

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

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