为什么PHP在推送元素时会创建一个新数组?
$a = array();
$b = $a;
$b[] = "Hello!";
echo count($a);
echo count($b);
在这里,您可以预期$ a和$ b的计数相等,但它们不是。
答案 0 :(得分:3)
默认情况下,PHP在分配值时会复制值。如果您想要参考,可以使用&
operator:
$a = array();
$b = &$a;
$b[] = "Hello!";
echo count($a); // prints 1
echo count($b); // prints 1
答案 1 :(得分:0)
这是因为$a
和$b
是两个独立的变量,当您分配$b = $a
时,您只是将$a
的内容复制到$b
,而不是$b = &$a;
使它们都指向同一个数组。
为此,您需要通过引用传递:
{{1}}
在这种情况下,$ b指向$ a的引用,这意味着它们都指向同一个数组,对它们的任何更改都将在两者上发生变化。