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"。这是词汇比较。第一个字符不同,这就是比较停止的地方。