Interview question: In php, is 123==0123?
This code:
var_dump(123);var_dump(0123);
will get you:
int 123int 83
This is because 0123
is octal notation (because of the 0
at the beginning), while 123
is decimal.
For more information, you can take a look at the Integer section of the manual.
An even trickier question would have been to ask about 79
and 079
, for instance :
var_dump(79);var_dump(079);
will get you :
int 79int 7
(9
is not a valid digit in octal ;-) )
Prefixing a number with 0
indicates octal (base 8), much the same way 0x
indicates hex (base 16).
1) When we use == operator in php, it checks if values are equal. So 5=="5" => true2) When we use === operator in php, it checks if values and data types are equal. So 5==="5" => false
123==0123 => falseALSO 123 === 0123 => false
123 is decimal number : 1230123 is an octal number (as it starts with 0) : 83
123 is not equal to 83