2009-11-30 62 views
3

我想告訴我的函數根據星期幾來調用哪個變量。星期幾存儲在$ s_day中,我想調用的變量基於哪一天發生變化。構建基於其他變量值和靜態文本的PHP變量名稱

例如

我在$ d_monday_text1中存儲了一個字符串'Welcome to the week'。而不是建立一組7個條件語句(例如,如果date = monday echo $ foo,否則如果date = tuesday echo $ bar ...),我可以通過連接名稱的方式更改函數中調用的變量的名稱變量?

$s_day = date("l"); 
$text1 = '$d_'.$s_day.'_text1'; 

我希望這個計算結果爲d_monday_text1 $,正如上面提到的,具有值「歡迎周」。所以,稍後我想要使用:

echo $text1; 

產生結果輸出=歡迎來到本週。

我已經看過變量,這可能是去這裏的方式,但我正在努力與語法。我可以得到它以回顯連接的名稱,但我無法弄清楚如何得到該名稱評估。

+0

可能重複http://stackoverflow.com/ questions/130240/can-i-use-a-generated-variable-name-in-php) – outis 2010-10-01 04:04:15

回答

9

可變變量是不是一個好主意 - 你還是使用數組。他們很適合這個問題,好多了。

例如,你可以使用這樣的事情:

$messages = array(
    'monday' => 'Welcome to the week', 
    'tuesday' => 'Blah blah', 
    'wednesday' => 'wed', 
    'thursday' => 'thu', 
    'friday' => 'fri', 
    'saturday' => 'sat', 
    'sunday' => 'week is over!' 
); 

$dayName = date('l'); 
echo $messages[$dayName]; 

數組是用於存儲多個相關值,如這些的數據格式。

+0

感謝賈尼。我認爲這將適用於比我小的數據集。它確實適合所給出的例子,這是我在這裏做什麼的簡單解釋。 – jkramp 2009-11-30 05:17:06

+0

一般來說,我認爲只要有任何大小的數據集,就應該使用數組。對變量使用動態命名通常是一個糟糕的主意,因爲它不會給數據提供任何結構,並且使得代碼的可讀性降低。 – 2009-11-30 05:22:05

+0

好的,讓我對它多加一點面試,然後我會更新這個問題,看看是否有更好的方法去使用數組。可能由於我的數據結構的方式,使用動態表達式比使用數組更容易。這並不是說我的數據結構不是有缺陷的。 – jkramp 2009-11-30 05:31:56

3

你可以使用這個語法:

$$文本1

我以前使用過這一點。評價當屬:

$($文本1)

0

讓我們看看下面的例子:

$construction_no = 5; 
$construction_5 = 'Door'; 

$var_name = 'construction_'.$construction_no; 
$var_value = ${$var_name}; 
echo $var_value; //Door 

面向對象的方法

$var_value = $this->{$var_name}; 
echo $var_value; //Door 
的[?我可以使用PHP中生成的變量名(