PHP 问题:八进制值
问题
如果我分配并打印这样的值:
$a = 012; print $a;
我得到了一个'10'的值,为什么?
回答
这是因为在PHP中给数字加前缀0会强制将该数字解释为八进制值。但是,它在内部存储为整数值,因此在打印时我们会返回整数值。要取回原始八进制值,您可以执行以下操作:
print base_convert($a, 10, 8);
甚至这个:
print decoct($a);
甚至这个:
print sprintf("%o", $a);
如果我分配并打印这样的值:
$a = 012; print $a;
我得到了一个'10'的值,为什么?
这是因为在PHP中给数字加前缀0会强制将该数字解释为八进制值。但是,它在内部存储为整数值,因此在打印时我们会返回整数值。要取回原始八进制值,您可以执行以下操作:
print base_convert($a, 10, 8);
甚至这个:
print decoct($a);
甚至这个:
print sprintf("%o", $a);