2017-04-14 96 views
0

我的函數返回一個數組時遇到了一些問題,我決定嘗試使用面向對象的方法來創建我的PHP代碼,並嘗試使用一些靜態函數創建一個類,因爲我決定不用不想使用對象訪問它。在我的代碼,同一個類中,我決定做以下功能:返回數組的PHP函數

public static function decideCategory($tweets) { 

    $tweet = $tweets; 

    if(in_array($tweet, self::$food)) { 
     echo "\nOur " . $tweet . " is under food\n"; 
    } //if statements of the same nature below as well. 

} 

現在,這個功能在某種意義上說,它不會拋出其中$食物在頂部definded作爲數組的錯誤的原理。然而,最初我只是將$ food定義爲一個私有靜態變量,然後我將以下函數傳遞給in_array。

public static function getFood() 
    { 
     self::$food = array("Wendys", "McDonalds", "Wendy's", "Chic Fil A", "Chic-Fil-a", "Burger", "TGI", "BBQ", "Grilling", "Wine", "Tasty", "Yum", "IHOP", "Pancakes", "Pizza", "Cake" 
     ,"Baking"); 
     return self::$food; 
    } 

但是,它會返回一個錯誤,指出in_array預計,其第二個參數數組值,但代替它看到一個空的傳遞來代替。爲什麼是這樣,我怎樣才能使用方法來做我的比較,而不是變量themselvs。如果這是Java這將是我會怎麼做,因此我不明白爲什麼PHP會有這些問題,因爲它似乎遵循類似的回報邏輯。

+1

我會因爲錯誤強烈懷疑這是[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378)。你想在這裏做什麼? – Machavity

+2

如果你想使用面向對象的方法,那麼你爲什麼試圖避免使用一個對象? –

+0

儘管使用Statics並不完全在面向對象上,但它仍然從類名訪問它,而不是僅僅調用函數 – SomeStudent

回答

3

是,直到你調用self :: getFood()自:: $食品爲空,如果你已經宣佈它作爲

static $food; 

更新你的方法如下

public static function decideCategory($tweets) 
{ 
    $tweet = $tweets; 
    $food = self::getFood(); 
    if(in_array($tweet, $food)) { 
     echo "\nOur " . $tweet . " is under food\n"; 
    } //if statements of the same nature below as well. 
} 
+0

或'in_array($ tweet,self :: getFood())' – AbraCadaver

+0

好吧,我試過這樣做原來,自我:: getFood(),但它抱怨說,它是空 – SomeStudent

+0

@SomeStudent我已經試過這個https://gist.github.com/anonymous/9c82067e09479123b9c44dfa8b743257並沒有錯誤,你可以嘗試相同的。 – swaveg