读取PHP数组时,[]意味着什么?

我一直在为PHP编写一个解析器,同时还搞乱了一些第三方代码,我遇到了一个关于[]运算符的奇怪例子。

通常情况下, []在没有键的情况下用在赋值的左侧,意思是“添加为最后一个元素”。

$a = array();
$a[] = 1;

将在数组$ a的最后加1。

在前面的代码中,我看到了这样一行:

$r =& $a[];

当我试图删除&,我得到了一个相当预期的致命错误:

致命错误:无法使用[]进行读取

&虽然,PHP不会抱怨。 表达式的含义是什么?

& $a[];


语法的意思是“使用对$ a []的引用”或对最新创建的数组元素的引用。

<?php
$a=array( );
$a[] = "a";
$a[] = "b";

print_r($a);

$r =& $a[];

print_r($a);

$r = "c";

print_r($a);

生产:

Array
(
    [0] => a
    [1] => b
)
Array
(
    [0] => a
    [1] => b
    [2] => 
)
Array
(
    [0] => a
    [1] => b
    [2] => c
)

我的猜测是它向数组添加了一个空元素,并给出该数组元素的$ ra引用。 你确定$ a应该是一个数组吗? 它也可能试图使用[]语法访问字符串的字符,在这种情况下,我不知道如何工作。

链接地址: http://www.djcxy.com/p/1857.html

上一篇: What does [] mean when reading from a PHP array?

下一篇: What's better to use in PHP $array[] = $value or array