从PHP数组读取时,[]的意思是什么?

时间:2010-10-11 17:34:12

标签: php

我一直在为PHP写一个解析器,虽然搞乱了一些第三方代码,但我遇到了一个关于[]运算符的奇怪案例。

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

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

将在数组$ a。

的末尾添加1

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

$r =& $a[];

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

  

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

虽然使用&,PHP根本不会抱怨。表达式是什么意思

& $a[];

2 个答案:

答案 0 :(得分:12)

语法意味着“使用对$ 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
)

答案 1 :(得分:1)

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