我不明白 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
末尾新值的指针(引用)。显然这有点循环,所以我不确定重点是什么!
我正在阅读我们使用的库 (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
末尾新值的指针(引用)。显然这有点循环,所以我不确定重点是什么!