纠正一个类中的array_push用法?

时间:2013-04-21 20:42:12

标签: php class function variables array-push

我有一个像这样的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数组中?我不确定我在哪里出错...!

感谢。

2 个答案:

答案 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;

是对的。 &在此标记为参考。