Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么在数字前面加0会改变它的值_Php_Octal_Var Dump - Fatal编程技术网

Php 为什么在数字前面加0会改变它的值

Php 为什么在数字前面加0会改变它的值,php,octal,var-dump,Php,Octal,Var Dump,为什么 var_dump(16) // displays int(16) 但是 有人能帮我解决这个问题吗?第二个值叫八进制。这和10号基地不一样。相反,它是基数8。在前面添加0时,它告诉PHP将其视为八进制 整数可以用十进制(以10为基数)、十六进制(以16为基数)、八进制(以8为基数)或二进制(以2为基数)表示法指定,也可以在前面加上符号(-or+) 要使用八进制表示法,请在数字前面加0(零) 基数8中的10是8 基数8中的6是6 8+6=14因为016被解释为八进制数,因为在PHP中以

为什么

var_dump(16) // displays int(16) 
但是


有人能帮我解决这个问题吗?

第二个值叫八进制。这和10号基地不一样。相反,它是基数8。在前面添加
0
时,它告诉PHP将其视为八进制

整数可以用十进制(以10为基数)、十六进制(以16为基数)、八进制(以8为基数)或二进制(以2为基数)表示法指定,也可以在前面加上符号(-or+)

要使用八进制表示法,请在数字前面加0(零)

基数8中的10是8

基数8中的6是6


8+6=14

因为
016
被解释为八进制数,因为在PHP中以零开头的“数字”被视为八进制,而八进制16是十进制14。。。。这与var_dump无关,与如何声明数字有关-。。。而且,如果您打算“在整个过程中使用八进制”,您必须确保结果“十四”以八进制表示法显示(带有前导零以指示它是八进制)。没有前导零表示
14
是(base-10)“14”,但是,“这是一个很容易犯的错误,人类在调试这个东西时很容易忽视。(是的,“曾经在那里,那样做过……”在我说“噢!”之前的很长一段时间里,我一直用额头撞着这个问题。)Hewlett-Packard小型计算机(HP1000、HP2000、HP3000等)通常使用八进制表示法,并且它们使用了要求在前面加百分号的约定,“
%
。“他们还将始终写出正确的位数,这样不仅可以清楚地显示数值是多少,而且可以清楚地显示它占用了多少位。他们的语言编译器也将遵守这一惯例。以类似的方式,十六进制(以16为基数)数字将使用前面的
$
字符。我碰巧喜欢这个惯例,因为它非常人性化,但并非所有语言都以同样的方式行事。
var_dump(016) // displays int(14)