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

Yia*_*nis 6 php

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

通常,[]在赋值的左侧没有键使用意味着"添加为最后一个元素".

$a = array();
$a[] = 1;
Run Code Online (Sandbox Code Playgroud)

将在数组$ a的末尾添加1.

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

$r =& $a[];
Run Code Online (Sandbox Code Playgroud)

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

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

随着&不过,PHP不会抱怨的.表达式的含义是什么?

& $a[];
Run Code Online (Sandbox Code Playgroud)

小智 12

语法意味着"使用对$ a []的引用"或对最新创建的数组元素的引用.

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

print_r($a);

$r =& $a[];

print_r($a);

$r = "c";

print_r($a);
Run Code Online (Sandbox Code Playgroud)

生产:

Array
(
    [0] => a
    [1] => b
)
Array
(
    [0] => a
    [1] => b
    [2] => 
)
Array
(
    [0] => a
    [1] => b
    [2] => c
)
Run Code Online (Sandbox Code Playgroud)

  • 现在我们知道这意味着什么,让我们承诺永远不要使用它. (20认同)