我回答说这是假的。然后他问为什么?我无法回答。任何人都可以回答吗?我很有兴趣学习它。
答案 0 :(得分:67)
此代码:
var_dump(123);
var_dump(0123);
会得到你:
int 123
int 83
这是因为0123
是八进制表示法(因为开头为0
),而123
是十进制。
有关详细信息,您可以查看手册的Integer部分。
一个更棘手的问题就是询问79
和079
,例如:
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是十进制数字。因此,他们并不平等。