我不明白PHP参考代码结合了&和[]

时间:2015-01-22 15:21:40

标签: php reference

我正在阅读我们使用的库中的一些代码(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[];

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

$a1[] = 4;

和4将添加到现有数组$a1

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

$a1=& $a1[];

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