我一直在为
PHP写一个解析器,虽然搞乱了一些第三方代码,但我遇到了一个关于[]运算符的奇怪案例.
通常,在赋值左侧没有键的情况下使用[],意思是“添加为最后一个元素”.
- $a = array();
- $a[] = 1;
将在数组$a的末尾添加1.
在前面提到的代码中,我看到了这样的一行:
- $r =& $a[];
Fatal error: Cannot use [] for reading
与&但是,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
- )