为什么“echo strcmp('60','100');”在PHP输出5?

时间:2012-02-15 07:41:55

标签: php strcmp

关于这个函数的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'“更大”,即使似乎ASCII值字符串长度'100'大于'60'

任何人都可以解释原因吗?

由于

3 个答案:

答案 0 :(得分:13)

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

6 - 1为5。

当你看它时,你可能看不到字符或数字 - 只是数字

答案 1 :(得分:8)

因为strcmp()在找到的第一个差异处停止。因此,“1”的ASCII值与“6”的ASCII值

之间存在差异

答案 2 :(得分:5)

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