2015-06-03 45 views
1

1.脚本启动:怪异输出,当数与0

$num = "00445790"; 
echo $num; 

回报:

00445790 

2.脚本

$num = 00445790; 
echo $num; 

回报:

2351 

有人可以解释为什么我在第二个脚本上获得2351

+5

你需要了解的数据类型 –

+0

这里是从哪里开始http://php.net/manual/zh/language.types.php – RiggsFolly

+1

我重新打开这个问题,原来的复制没有涵盖' 9'在号码。 –

回答

7

Integers以零开始考虑八进制。由于八进制整数仅使用0到8之间的数字,因此忽略来自9的所有内容。

所以00445790变成004457这就是2351十进制。

+0

谢谢,这真的清除了它。我很困惑,为什么会发生这种情况,但这很有道理!再次感谢。 –

+0

这听起来很奇怪。即使PHP是一种解释器语言,它也可以发现数字序列在某种程度上是不正确的(如果前导零是主要的,那么这是一个错误的八进制)并且应该发出警告。或者认识到它实际上是一个十进制数,并将其视为如此。 (我的PHP日子已经有一段时间了...) –

+0

@ThomasKilian一个警告将有助于这样的情况,而不是一个潜在的难以发现的错误。 –