PHP 为什么这个简单的数组显示不正确的值

PHP Why is this simple array showing incorrect value

这很简单,但我不明白为什么当我从这个 PHP 数组 echo $num[3] 时得到 0。

$num=[00000004,00000002,00000005,00000009]; echo $num[3];

由于前导零,它必须是字符串,而不是数字:

$num=['00000004','00000002','00000005','00000009']; echo $num[3];

数据存储不正确,它们以数字形式存储,但它们是字符串,因此需要以字符串形式存储。当我 运行 你的代码抛出一个错误

Parse error:  Invalid numeric literal in [...][...] on line 2

下面的代码将 return 00000009

$num=['00000004','00000002','00000005','00000009']; echo $num[3];

你的语法不正确,试试这个

$num = array("00000004","00000002","00000005","00000009");
echo $num['3'];

基于Integers手册

To use octal notation, precede the number with a 0 (zero). To use hexadecimal notation precede the number with 0x. To use binary notation precede the number with 0b.

您的值实际上代表八进制表示法,这就是您导致问题的原因。

将它们转换为字符串:

$num=[
    '00000004',
    '00000002',
    '00000005',
    '00000009'
  ]; 
echo $num[3];

输出:https://3v4l.org/ktsJY

注意:- 从 Php7 开始,它会给你 Parse error: Invalid numeric literal

https://3v4l.org/W3aD0