1

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

谢谢。

4

2 回答 2

4

$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');
于 2013-04-21T20:44:46.933 回答
1

您必须$var通过引用分配 's。您复制数组,然后将一些条目添加到副本中,然后返回初始数组。

$var2 = &$this->my_variable;

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

于 2013-04-21T20:44:41.050 回答