2014-12-30 120 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); 
相關問題