我正在阅读我们使用的库中的一些代码(SimplePie),我正在尝试找到一些内存问题。我发现了一个代码如下所示,我不明白它的作用
<?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[];
答案 0 :(得分:2)
$a1=& $a1[];
在数组$a1
中添加一个新的空项(本身就是对$a3
的引用),然后设置$a1
作为这个项目的参考。
答案 1 :(得分:2)
=&
返回对右侧的引用,而不是复制它。
$a1
是一个数组,$a1[]
指的是数组中的下一个空位置,因此您可以说:
$a1[] = 4;
和4将添加到现有数组$a1
。
我不确定在作业右侧使用[]
是否有效,但代码是什么
$a1=& $a1[];
正在做的是说$a1
现在是$a1
末尾新值的指针(引用)。显然这有点循环,所以我不确定这是什么意思!