Php 类中正确的数组推送用法?

Php 类中正确的数组推送用法?,php,class,function,variables,array-push,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()

我有一个这样的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
数组中?我不知道我在这里哪里出错了


谢谢。

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

$var2 = &$this->my_variable;

那是对的。
&
在此标记一个引用。

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

$var2 = &$this->my_variable;

那是对的。
&
在这里标记了一个引用。

$var1=$this->my_变量
实际上创建了数组的一个副本,然后将值推送到该副本上

相反,您可以这样做:
$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');

$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');

@bwoebi:对短代码感兴趣的人不会使用
array\u push
:P@minitech不了解
[]
的人使用
array\u push
^^我想在编写php的10年里,我从来没有使用过array\u pop。但我也发现,那些甚至不知道array\u push(无论是否使用)的人也永远不知道array\u pop和array\u shift和array_unshift@bwoebi:对短代码感兴趣的人不使用
array\u push
:P@minitech不了解
[]
的人使用
array\u push
^^我想在编写php的10年里,我从来没有使用过array\u pop。但我也发现,那些甚至不知道数组推动(不管他们是否使用它)的人也永远不知道数组推动、数组移位和数组取消移位