采访问题:在php中,是123==0123吗?

采访问题:在php中,是123==0123吗?,php,comparison,Php,Comparison,我的回答是错误的。然后他问为什么?我无法回答。有人能回答吗?我很有兴趣学习它。此代码: var_dump(123); var_dump(0123); 将为您提供: int 123 int 83 这是因为0123是八进制表示法(因为开头的0),而123是十进制 有关更多信息,请参阅手册的一节 一个更棘手的问题是询问79和079,例如: var_dump(79); var_dump(079); 将为您提供: int 79 int 7 (9不是八进制的有效数字;-)因为0123表示“八进制

我的回答是错误的。然后他问为什么?我无法回答。有人能回答吗?我很有兴趣学习它。

此代码:

var_dump(123);
var_dump(0123);
将为您提供:

int 123
int 83
这是因为
0123
是八进制表示法(因为开头的
0
),而
123
是十进制


有关更多信息,请参阅手册的一节


一个更棘手的问题是询问
79
079
,例如:

var_dump(79);
var_dump(079);
将为您提供:

int 79
int 7

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

因为0123表示“八进制123(以8为基数)”,即十进制83。

在数字前面加上
0
表示八进制(以8为基数),这与
0x
表示十六进制(以16为基数)。

0123是八进制数的表示法(以83为小数点,从我的头顶算起),123是一个十进制数。因此,它们不相等。

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

123==0123=>false 另外123===0123=>false

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


123不等于83

我讨厌八进制。这是一个胡说八道的面试问题。这是一种深奥的语言怪癖——当然,了解它的人显然对PHP非常熟悉,但这并不能使他们成为优秀的程序员;同样,如果你不知道,那并不意味着你不是一个称职的程序员。我们雇佣了一个没有PHP经验的人担任PHP写作职位,因为他在其他语言方面至少有十年的经验。实际上,在JavaScript中也是如此,可能还有一些其他语言。所以我甚至不相信它告诉了我他们是否了解PHP。这不是一个深奥的语言怪癖,它是许多主流编程语言的共同符号。了解这一点并不重要。不知道这一点说明了很多细节知识(或缺乏)。有点像
10*0.1
是否使
1.0
…可能有点吹毛求疵,但我会说“指示”而不是“暗示”。
0
0x
前缀显式地表示base,而不是隐式地表示base。