1

可能重复:
面试题:在php中,是123==0123吗?

我是 PHP 新手。我在学习 PHP 时尝试将 0123 存储在 PHP 变量中,但是当我回显该变量时它显示 83 而不是 0123。谁能给我确切的技术原因。

提前致谢, 达瓦尔

4

3 回答 3

5

因为当您应该将其存储为字符串时,您可能试图将其存储为整数。

// Incorrect
$var = 0123 // octal number (equivalent to 83 decimal)

// Correct
$var = '0123'
于 2012-06-11T11:44:49.933 回答
4

你可能正在做这样的事情

$var = 0123;

这是一个整数而不是字符串。旁注:“0123”不是0数字,因为除了abs($var)<1or之外,没有数字有前导$var == 0。但是当与整数一起使用时,前导0具有特殊含义:它被视为以 8 为底的整数,然后将其转换为以 10 为底的整数

               0123_8 = 83_10
1*8^2 + 2*8^1 + 3*8^0 = 8*10^1 + 3*10^0
于 2012-06-11T11:47:04.777 回答
1

如果你这样做:

$a = 0123;

然后,您确实在使用八进制数0123 = 83

于 2012-06-11T11:46:41.363 回答