2013-04-21 35 views
0

我有一个PHP类,像这样:更正类中的array_push用法?

<?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函数返回一个空数组,并且没有显示错误。

如何获得添加到$my_variable数组中的“var1”和“var2”字符串?我不确定我在哪里错了...!

谢谢。

回答

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'); 
+0

人们使用这种'无意义的'变量来缩短'$ var'。 – bwoebi 2013-04-21 20:46:42

+1

@bwoebi:对短代码感兴趣的人不要使用'array_push' ...:P – Ryan 2013-04-21 20:48:06

+0

@minitech不知道'[]'_use_'array_push' ^^ – bwoebi 2013-04-21 20:54:38

0

你必须指定$var作为参考。您复制数组,然后添加到复制一些条目,然后返回初始数组。

$var2 = &$this->my_variable; 

会是正确的。 &在这里标记为参考。