比较数字字符串
从PHP中的类型杂耍和(严格)更大/更小比较的问题
我知道PHP会在任何时候将字符串解释为数字。
"10" < "1a" => 10 less than 1 expecting false
"1a" < "2" => 1 less than 2 expecting true
"10" > "2" => 10 greater than 2 expecting true
但在"10" < "1a"
的情况下,php返回true。
我不理解这个概念,请帮我澄清一下。
编辑:
但是当我添加"10" + "1a"
它返回11,这意味着php将“10”解释为10,“1a”解释为1。那是正确的吗?
这很容易1a
不是数字。 所以PHP将string(2)"10"
与string(2)"1a"
并且数字位于大多数文本编码表中的字母字符之前(查看ASCII或UTF-8字符表)。
所以1
的10
是等于1
的1a
和0
的10
低于a
的1a
。 结果10
比1a
低。
A在9之后。你可以在这个字符串中看到它,从低到高排序。
0123456789abcdefghijklmnopqrstuvwxyz
所以10比1a要低。
如果你想确定,比较数字,把(type)放在变量前面:
(int)"10" < (int)"1a"
(int)"1a" < (int)"2"
(int)"10" > (int)"2"
链接地址: http://www.djcxy.com/p/10035.html