2011-03-31 133 views
0

我已經定義了幾個常數是這樣的:添加變量,常量,PHP

define("TITLE_2","Yahoo"); 
define("TITLE_3","Google"); 

接下來,我想通過一個函數來獲取常數。

public function title($id) { 
    return TITLE_.$id; 
} 

的想法,我可以調用$這個 - >標題(2),以獲得雅虎和$這個 - >標題(3),以獲得谷歌。但是,它不起作用。我將TITLE_2或TITLE_3替換爲Yahoo或Google。

幫助?謝謝。

+1

無論如何你爲什麼要這麼做? 「TITLE_1」和「TITLE_2」一樣沒有意義。將1或2傳給'getTitle()'並不能幫助任何人理解這些幻數所代表的含義。要麼*要使用常量,然後直接使用'TITLE_YAHOO'或'TITLE_GOOGLE'來訪問它們,或者使用Contant Methods *而不是* Constants,例如。 'getTitleForYahoo()'和'getTitleForGoogle()'返回字符串。但不是那混雜。 – Gordon 2011-03-31 09:17:42

回答

7

使用constant功能

public function title($id) { 
    return constant("TITLE_$id"); 
} 
+0

TITLE _。$ id應引用。否則PHP通知將在那裏。 – Gaurav 2011-03-31 09:03:51

+1

注意:使用未定義的常量TITLE_ - 在第1行的命令行代碼中假定'TITLE_'---您應該使用「TITLE_ $ id」 – edorian 2011-03-31 09:06:52

+0

返回常量(「TITLE _」。$ id);應該是正確的... – Tobias 2011-03-31 09:09:51

4

什麼PHP是試圖在這裏做的是「得到定義TITLE_,然後附加存儲在$ ID值」。

您需要使用constant()功能,這個工作就像你想要的:

public function title($id) { 

    return constant("TITLE_$id"); 
} 

使用你描述下還生產方式和

注意:使用未定義的常量TITLE_的 - 假設「 'TITLE_'

確保您打開了錯誤報告並至少啓用了E_NOTICE戰爭因爲他們會幫助你很多當調試這樣的事情。

+0

+1不知道該功能。輕鬆解決! – Wh1T3h4Ck5 2011-03-31 09:07:19

1

需要return constant(TITLE_.$id)

編輯

you need to `return constant("TITLE_.$id")` 

感謝拉夫

+0

TITLE _。$ id應該被引用。否則PHP通知將在那裏。 – Gaurav 2011-03-31 09:04:19

0

也許你可以使用get_defined_constants()來獲取常量的列表,然後選擇你想要的..