为什么“;echo strcmp(';60';,';100';)";在php输出5中


Why does "echo strcmp('60', '100');" in php output 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

  • '60'的ASCII总值=(54+48)=102

  • "100"的ASCII总值=(49+48+48)=145

strcmp()函数表示"60"比"100"大",尽管"100"的ASCII值字符串长度似乎大于"60"

有人能解释为什么吗

感谢

strcmp()返回字符串之间第一个不匹配字符的差值。

6-1为5。

当你看它时,你可能看不到字符或数字—只有数字

因为strcmp()在找到的第一个差异处停止。因此,ASCII值"1"和ASCII值"6"之间的差异

6比1大5"。这是词汇比较。第一个字符不同,这就是比较停止的地方。