我已经构建了一个函数来检索数组的最后一个指定键,它引用了数组并显示它很好,但是,当我尝试添加到引用变量时,它不会影响引用的数组。
这是我的代码:
class test {
public function __construct() {
// For testing
$this->keys[] = 'key1';
$this->keys[] = 'key2';
$this->array['key1']['key2'] = 'Hello World';
}
protected function &getArray() {
$array = &$this->array;
foreach($this->keys as $key) {
$array = &$array[$key];
}
return $array;
}
function add() {
$tmpArray = $this->getArray();
print_r($tmpArray);
echo "<br>\n";
$tmpArray = 'Goodbye World';
print_r($tmpArray);
echo "<br>\n";
print_r($this->array);
}
}
$test = new test;
$test->add();
总结一下,add()和__construct()用于测试。我正在尝试使用add()添加到$this->array
。但是,当我指定$tmpArray = 'Goodbye World'
时,引用的数组$this->array['key1']['key2']
仍然是Hello World。
有人可以帮我指出正确的方向吗?
答案 0 :(得分:1)
为了在PHP中返回引用,您需要使用&
两次,一次在定义中,再一次在赋值中。你错过了任务:
$tmpArray = &$this->getArray();
有关详细信息,请参阅PHP: Returning References,请不要问为什么因为我无法为PHP行为生成基本原理。