比较数字字符串

从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字符表)。

所以110是等于11a010低于a1a 。 结果101a低。


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

上一篇: Comparing numeric strings

下一篇: If value is greater/lesser than xyz