Comparing numeric strings
From the question Type-juggling and (strict) greater/lesser-than comparisons in PHP
I know PHP interpret strings as numbers whenever it can.
"10" < "1a" => 10 less than 1 expecting false
"1a" < "2" => 1 less than 2 expecting true
"10" > "2" => 10 greater than 2 expecting true
But in the case of "10" < "1a"
php returns true.
I am not understanding the concept please help me to clarify it.
Edit:
But when I add "10" + "1a"
it returns 11 that means php interprets "10" as 10 and "1a" as 1. Is that correct?
It's easy 1a
is not numeric. So PHP compares string(2)"10"
against string(2)"1a"
and numbers are before alpha characters in the most text encoding tables (have a look at the ASCII or UTF-8 character tables).
So 1
of 10
is equals 1
of 1a
and 0
of 10
is lower than a
of 1a
. That results in 10
is lower than 1a
.
A comes after 9. You can see this in this string, sorted from low to high.
0123456789abcdefghijklmnopqrstuvwxyz
So 10 is lower than 1a.
如果你想确定,比较数字,把(type)放在变量前面:
(int)"10" < (int)"1a"
(int)"1a" < (int)"2"
(int)"10" > (int)"2"
链接地址: http://www.djcxy.com/p/10036.html
上一篇: $ var不大于并且不小于字符长度
下一篇: 比较数字字符串