我正在尝试构建一个php函数,并发现了一些奇怪的行为,我甚至无法提出一个正确的问题,所以如果有人能够解释发生了什么,我将不胜感激。
我正在使用带有前导零的一组数字,并且重要的是它们被维护,但用户几乎从不输入前导零。所以我用这个:
$x = 123;
$n = 5;
$x = str_pad((int)$x,$n,"0",STR_PAD_LEFT);
echo $x;
并且,根据需要,这会让我获得成功。
当我测试用户在数字
之前输入零时,会发生奇怪的事情$x = 0123;
$n = 5;
$x = str_pad((int)$x,$n,"0",STR_PAD_LEFT);
echo $x;
返回00083.如果用户要输入00123,也会发生同样的事情。
这个结果让我完全不知所措。提前感谢您对此处发生的事情的任何解释。
答案 0 :(得分:5)
以0
开头的整数文字被解释为 base 8 。您的第二个$x
的值为83. See the manual on integers以获取详细信息。
intval()
函数允许您在读取用户字符串时指定基数。
如果我们在谈论文字,在PHP中,文字0
是十进制的,而在C and C++中它是八进制的。这让生活充满了乐趣。