I have answered it is false. then he asked why? i couldn't answer. Can anyone make the answer? I am very interested to learn it.
This code :
var_dump(123);
var_dump(0123);
will get you :
int 123
int 83
this is because 0123 is octal notation (because of the 0 at the begining), while 123 is decimal.
For more informations, 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 79
int 7
(9 is not a valid digit in octal ;-) )
Because 0123 means "123 in octal (base 8)", which is 83 in decimal.
Prefixing a number with 0
indicates octal (base 8), much the same way 0x
indicates hex (base 16).
0123 is notation for an octal number (83 decimal, off the top of my head), whilst 123 is a decimal number. Therefore, they are not equal.
1) When we use == operator in php, it checks if values are equal. So 5=="5" => true 2) When we use === operator in php, it checks if values and data types are equal. So 5==="5" => false
123==0123 => false ALSO 123 === 0123 => false
123 is decimal number : 123 0123 is an octal number (as it starts with 0) : 83
123 is not equal to 83