2012-10-23 134 views
1

我想要在數組中解析變量,所以當我回顯$ head ['meta_title']時,會顯示lol。我試圖用雙引號包裝它,但似乎也不工作,有沒有辦法繞過這個?謝謝!數組中的變量PHP

我得到任何意外T_VARIABLE,當我使用雙引號我得到意想不到的「」

$meta_title = "lol"; 

public $head = array 
(
    "title"  => "blah", 
    "meta_title" => $meta_title, 
    "meta_content" => $meta_content 
); 
+0

爲什麼在$ meta_content之後放一個逗號?刪除它 – itsols

+0

刪除'$ meta_content'末尾的逗號,' –

+0

@MuthuKumaran最後一個逗號沒有任何傷害。 – insertusernamehere

回答

5

你不能使用表達式來初始化類屬性。這兩個變量的值在運行時才知道,因此不能在聲明中使用。相反,在構造函數中定義它們。

public $head = array 
(
    // The title as a string literal is ok... 
    "title"  => "blah", 
    "meta_title" => NULL, 
    "meta_content" => NULL 
); 
// Pass them to the constructor as parameters 
public function __construct($meta_title, $meta_content) 
{ 
    // Initialize them in the constructor. 
    $this->head['meta_title'] = $meta_title; 
    $this->head['meta_content'] = $meta_content; 
} 

From the docs

類成員變量被稱爲 「屬性」。您也可以使用其他術語(如「屬性」或「字段」)來查看它們,但爲了本參考的目的,我們將使用「屬性」。它們是通過使用關鍵字public,protected或private之一來定義的,後面跟着一個正常的變量聲明。 該聲明可能包含一個初始化,但是這個初始化必須是一個常量值 - 也就是說,它必須能夠在編譯時進行評估,並且不能依賴運行時信息進行評估。

+0

啊好吧,這將是有意義的,其實我有他們在另一個類中定義, \t \t'類standardHandle \t \t { \t \t \t // - 變量 - // \t \t \t \t \t \t //元數據 \t \t \t public $ meta_title =「lol」; \t \t \t public $ meta_content =「mao」; \t \t \t \t \t \t //樣式表 \t \t \t公共$風格=陣列( \t \t \t \t 「鏈接」=> 「的style.css」, \t \t \t \t 「類型」=> 「屏幕」 , \t \t \t); \t \t \t \t \t \t \t \t}' – Melbourne2991

+0

好的,那我將它們添加到自己的本機類的構造器? – Melbourne2991

+0

@ user1650757將它們傳遞給需要使用它們的類的構造函數。如果它們是在另一個類中定義的,那麼它會是這樣的:'new ThisClass($ otherclass-> meta_title,$ otherclass-> meta_content);' –

2

如果這是在一個對象內,您不能以這種方式分配變量。你必須使用__construct-方法來設置它。

0

公衆需要在$ head之前移除。我在PHP沙箱中創建了一個示例。

http://sandbox.onlinephpfunctions.com/code/d17bc90e1291f6a3b23537984df755e40446add6

+0

我會說'公共'顯示更多,即使OP沒有發佈整個事物,他也試圖在一個對象的範圍內做到這一點。 – insertusernamehere

+0

這是一個「公共」類屬性聲明。 http://php.net/manual/en/language.oop5.properties.php –

+0

愚蠢的我,當然是在一個班級。 NVM。 –