2014-12-30 123 views
1

我在php中有一个类。在课堂上我有一个叫setContent()的功能。里面,我有多个变量与值。我已将这些变量值存储在一个数组中。在另一个函数中,我想要获取存储在数组中的所有变量。所以我的代码是这样的php类从数组中的另一个函数获取变量

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。那么有人可以告诉我如何在数组中的其他函数内获取这些变量。任何帮助和建议都将非常可观。

+0

应声明变量函数外,'$全球= my_array阵列();' –

+0

这是规避的类设计的一切。不要使用全局变量。将该变量存储为该类的一个属性。 – Erik

+0

由于您正在使用类,请阅读有关可能性的完整范围,特别是属性:http://php.net/manual/en/language.oop5.properties.php – LS11

回答

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

提供描述,此答案将是完美的。 – Girish

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()); 

我会改善类的可重用性

-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); 
相关问题