php类从数组中的另一个函数获取变量

时间:2014-12-30 13:51:10

标签: php arrays class

我有一个PHP课程。在课堂内我有一个名为setContent()的函数。在里面我有多个变量值。我已经获取了这些变量值并将它们存储在一个数组中。在另一个函数中,我希望将所有变量存储在一个数组中。所以我的代码就像这样

class foo{
    public function setContent() {
        global $my_array;
        $var1 = 'variable 1';
        $var2 = 'variable 2';
        $var3 = 'variable 3';
        $var4 = 'variable 4';
        $var5 = 'variable 5';
        new_array = array();
        $my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5);
    }

    public function getContent() {
        global $my_array;
        var_dump($my_array);
    }
}

但是当我在做var_dump($my_array)时。它显示NULL。所以有人可以告诉我如何将这些变量放在数组中的其他函数中。任何帮助和建议都会非常明显。

3 个答案:

答案 0 :(得分:5)

您可以通过在类中声明它来设置要使用的数组。然后,您只需引用$this而不是全局变量。

class foo{
    public $my_array; # new bit here

    public function setContent() {
        # global $my_array; take this bit out
        $var1 = 'variable 1';
        $var2 = 'variable 2';
        $var3 = 'variable 3';
        $var4 = 'variable 4';
        $var5 = 'variable 5';
        $new_array = array();
        $this->my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5);
    }

    public function getContent() {
        var_dump($this->my_array);
    }
}

因为数组现在是foo对象的一部分,所以我们现在可以一直引用它。如果您要公开它,您可以执行以下操作:

$f = new foo();
print_r($f->my_array);

答案 1 :(得分:1)

为什么不像这样实现你的类:

class foo{

    public $my_array = array();

    public function setContent() {
        $var1 = 'variable 1';
        $var2 = 'variable 2';
        $var3 = 'variable 3';
        $var4 = 'variable 4';
        $var5 = 'variable 5';

        array_push($this->my_array, $var1, $var2, $var3, $var4, $var5);
    }

    public function getContent() {
        var_dump($this->my_array);
    }
}

我认为在OOP中使用全局变量是一种不好的做法。

实际上我建议重写你的getContent函数:

public function getContent() {
    return $this->my_array;
}

并实现你的对象:

$my_object = new foo();
$foo->setContent();
var_dump ($foo->getContent());

我将提高类的可重用性

答案 2 :(得分:-1)

http://php.net/manual/fr/function.array-push.php

你要写 array_push($new_array, $var1, $var2, $var3, $var4, $var5);

因为array_push返回数组的长度(整数,而不是数组!)。所以你不能写:

$myarray = array_push($myarray, $var1, $var2, $var3, $var4, $var5);