我在运行下面的代码时出现以下错误:
Code:
<?php
$a = array(00001, 00008, 00009, 00012);
print_r($a);
?>
Error:
解析错误:无效的数字文字。
为什么会出现这个问题以及如何解决这个问题?
这是由于 PHP 7(相对于 PHP5)中处理整数(特别是八进制)的方式发生了变化。
来自文档(来自 PHP7 迁移)
无效的八进制文字
以前,包含无效数字的八进制文字会被静默截断(0128 被视为 012)。现在,无效的八进制文字将导致解析错误。
来自整数的文档
在 PHP 7 之前,如果八进制整数(即 8 或 9)中给出了无效数字,则该数字的其余部分将被忽略。从 PHP 7 开始,会发出解析错误。
要么将它们用作字符串,要么用作实际整数
$a = array(1, 8, 9, 12); // Integers
$a = array("00001", "00008", "00009", "00012"); // Strings
- PHP7 与 PHP5 的示例:https://3v4l.org/GRZF2
- http://php.net/manual/en/language.types.integer.php
- Manual: http://php.net/manual/en/migration70.inknown.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)