为什么当我推送一个元素时 PHP 会创建一个新数组?
$a = array();
$b = $a;
$b[] = "Hello!";
echo count($a);
echo count($b);
在这里,您会期望 $a 和 $b 的计数相等,但事实并非如此。
默认情况下,PHP 在分配值时会复制它们。如果需要参考,可以使用&
运算符:
$a = array();
$b = &$a;
$b[] = "Hello!";
echo count($a); // prints 1
echo count($b); // prints 1
这是因为$a
and$b
是两个独立的变量,当您分配时,$b = $a
您只是复制$a
to的内容,而$b
不是使它们都指向同一个数组。
为此,您需要通过引用传递:
$b = &$a;
在这种情况下,$b 指向对 $a 的引用,这意味着它们都指向同一个数组,对其中一个的任何更改都会对两者都进行更改。