面试问题:在php中,是123 == 0123?

时间:2009-09-11 18:59:05

标签: php comparison

我回答说这是假的。然后他问为什么?我无法回答。任何人都可以回答吗?我很有兴趣学习它。

5 个答案:

答案 0 :(得分:67)

此代码:

var_dump(123);
var_dump(0123);

会得到你:

int 123
int 83

这是因为0123是八进制表示法(因为开头为0,而123是十进制。


有关详细信息,您可以查看手册的Integer部分。


一个更棘手的问题就是询问79079,例如:

var_dump(79);
var_dump(079);

会得到你:

int 79
int 7

9不是八进制中的有效数字;-))

答案 1 :(得分:24)

使用0前缀数字表示八进制(基数为8),与0x表示十六进制(基数为16)的方式大致相同。

答案 2 :(得分:5)

1)当我们在php中使用==运算符时,它会检查值是否相等。  所以5 ==“5”=>真正 2)当我们在php中使用===运算符时,它会检查值和数据类型是否相等。  所以5 ===“5”=>假

123 == 0123 =>假 另外123 === 0123 =>假

123是十进制数:123 0123是八进制数(以0开头):83

123不等于83

答案 3 :(得分:2)

因为0123的意思是“八进制的123(基数8)”,即十进制的83.

答案 4 :(得分:2)

0123是八进制数字的表示法(小数点后8位,在我的头顶之外),而123是十进制数字。因此,他们并不平等。