我有一个像这样的PHP类:
<?php
class MyClass {
public $my_variable = array();
public function func1() {
$var1 = $this->my_variable;
array_push($var1, 'var1');
return $this->my_variable;
}
public function func2() {
$var2 = $this->my_variable;
array_push($var2, 'var2');
return $this->my_variable;
}
}
$my_class = new MyClass;
print_r($my_class->func1());
print_r($my_class->func2());
?>
两个print_r
函数返回一个空数组,并且没有显示错误。
如何将“var1”和“var2”字符串添加到$my_variable
数组中?我不确定我在哪里出错...!
感谢。
答案 0 :(得分:2)
$var1 = $this->my_variable
实际上会创建一个数组副本,然后将值推送到。
相反,您可以这样做:$var1 = &$this->my_variable
来创建引用,但最好不要使用无意义的变量:
public function func1() {
$this->my_variable[] = 'var1';
return $this->my_variable;
}
public function func2() {
$this->my_variable[] = 'var2';
return $this->my_variable;
}
或者,更合适:
public function add($value) {
$this->my_variable[] = $value;
return $this->my_variable;
}
// call with `$my_class->add('var1'); $my_class->add('var2');
答案 1 :(得分:0)
您必须通过引用分配$var
。您复制数组,然后将一些条目添加到副本,然后返回初始数组。
$var2 = &$this->my_variable;
是对的。 &
在此标记为参考。