Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Interview question: In php, is 123==0123?

Tags:

php

comparison

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.

like image 703
Sadat Avatar asked Sep 11 '09 18:09

Sadat


4 Answers

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 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 79
int 7

(9 is not a valid digit in octal ;-) )

like image 115
Pascal MARTIN Avatar answered Nov 18 '22 22:11

Pascal MARTIN


Prefixing a number with 0 indicates octal (base 8), much the same way 0x indicates hex (base 16).

like image 36
fbrereto Avatar answered Nov 18 '22 22:11

fbrereto


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

like image 36
Krishna Kant Sharma Avatar answered Nov 18 '22 23:11

Krishna Kant Sharma


Because 0123 means "123 in octal (base 8)", which is 83 in decimal.

like image 2
Cat Plus Plus Avatar answered Nov 18 '22 23:11

Cat Plus Plus