我不明白 PHP 引用结合了 & 和 [] 的代码

I do not understand PHP references code that combines & and []

我正在阅读我们使用的库 (SimplePie) 中的一些代码,我正在尝试寻找一些内存 issues.I 找到了如下所示的代码,但我不明白它的作用

<?php
$a1=array('a1first',2,3);
$a3=array();
$a3[]=&$a1;
var_dump($a1);
$a1=& $a1[];
var_dump($a1);
$a1="bbb";
echo "<br />";
var_dump($a1);
echo "<br />";
var_dump($a3);
?>

输出为

array(3) { [0]=> string(7) "a1first" [1]=> int(2) [2]=> int(3) } NULL 
string(3) "bbb" 
array(1) { [0]=> array(4) { [0]=> string(7) "a1first" [1]=> int(2) [2]=> int(3) [3]=> &string(3) "bbb" } }

我的问题是这条线的作用以及何时使用它

$a1=& $a1[];

$a1=& $a1[]; 在数组 $a1 中追加一个新的空项(本身就是对 $a3 的引用),并且 $a1 然后设置为对此项目的引用。

=& returns 对右侧的引用,而不是复制它。

$a1是一个数组,$a1[]指的是数组中下一个空位置,所以可以说:

$a1[] = 4;

并且 4 将添加到现有数组 $a1

我不确定在赋值的右侧使用 [] 是否有效,但是代码是什么

$a1=& $a1[];

所做的是说 $a1 现在是指向 $a1 末尾新值的指针(引用)。显然这有点循环,所以我不确定重点是什么!