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?
A comes after 9. You can see this in this string, sorted from low to high.
0123456789abcdefghijklmnopqrstuvwxyz
So 10 is lower than 1a.
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 1of 1a and 0 of 10 is lower than a of 1a. That results in 10 is lower than 1a.
If you want to be sure, that you comparing numbers, put (type) before variable:
(int)"10" < (int)"1a"
(int)"1a" < (int)"2"
(int)"10" > (int)"2"
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With