1

为什么当我推送一个元素时 PHP 会创建一个新数组?

$a = array();
$b = $a;

$b[] = "Hello!";
echo count($a);
echo count($b);

在这里,您会期望 $a 和 $b 的计数相等,但事实并非如此。

4

2 回答 2

3

默认情况下,PHP 在分配值时会复制它们。如果需要参考,可以使用&运算符

$a = array();
$b = &$a;

$b[] = "Hello!";
echo count($a);  // prints 1
echo count($b);  // prints 1
于 2013-08-08T08:37:48.890 回答
0

这是因为$aand$b是两个独立的变量,当您分配时,$b = $a您只是复制$ato的内容,而$b不是使它们都指向同一个数组。

为此,您需要通过引用传递:

$b = &$a;

在这种情况下,$b 指向对 $a 的引用,这意味着它们都指向同一个数组,对其中一个的任何更改都会对两者都进行更改。

于 2013-08-08T08:38:40.657 回答