使用下面的代码不起作用,但当我使用时
<?php
$GLOBALS['players'] = array();
function add($name) {
$array = $GLOBALS['players'][$name] = array();
array_push($array, "b");
}
add("a");
print_r($players);
?>
(输出:Array([a]=>Array())此处的代码
<?php
$GLOBALS['players'] = array();
function add($name) {
$array = $GLOBALS['players'][$name] = array();
array_push($GLOBALS['players'][$name], "b");
}
add("a");
print_r($players);
?>
(输出:Array([a]=>Array([0]=>b))工作正常。为什么$array在引用同一个数组时不起作用。
很简单,当您将值传递给$array
时,您将$GLOBAL
数组传递给一个新变量,而不是引用变量$GLOBAL
变量。
简而言之:$array
和$GLOBAL
是两个不同的变量。这样做就像做:
$a = 10;
$b = $a;
$b++;
print_r($a); // Will not print 11, but 10, because you edited the var $b, that is different from $a.
要解决这个小问题您必须通过如下引用将变量传递给$array
:
function add($name) {
$GLOBALS['players'][$name] = array();
$array = &$GLOBALS['players'][$name];
array_push($array, "b");
}