2012-03-21 52 views
1

我有以下功能。PHP函數中的變量裏面的變量?

問題是$ lang變量會因$this->setts['site_lang'];而異。實際的問題如下:

$condition_details['description_$lang'] 

(這是不工作)。我如何獲得這顯示

$condition_details['description_us'] 

$condition_details['description_fr'] 

取決於$ LANG設置?

這裏是全功能:

function shipped_drop_down($box_name = 'item_shipped_via', $selected = null, $form_refresh = null) 
{ 
    (string) $display_output = null; 
    $lang = $this->setts['site_lang']; 
    $sql_select_conditions = $this->query("SELECT id, description_".$lang." FROM " . DB_PREFIX . "advanced_shipping_carriers ORDER BY theorder,description_".$lang." ASC"); 
    $display_output = '<select name="' . $box_name . '" ' . (($form_refresh) ? 'onChange = "submit_form(' . $form_refresh . ', \'\')"' : '') . ' style="font-size:10px; width: 120px;"> '; 
    while ($condition_details = $this->fetch_array($sql_select_conditions)) 
    { 
     $display_output .= '<option value="' . $condition_details['id'] . '" ' . (($condition_details['id'] == $selected) ? 'selected' : '') . '>' . $condition_details['description_$lang'] . '</option> '; 
    } 
    $display_output .= '</select> '; 
    return $display_output; 
} 

回答

5

你可以做

$condition_details['description_'.$lang] 

或使用"

$condition_details["description_$lang"] 
+0

'$ condition_details [ 「介紹_ {$ LANG}」]'是比較正確的做法,但二者將起作用。 – iMoses 2012-03-21 14:55:33

+0

@iMoses:究竟「更正確」?下面是另一種方法的一個參數:基本的語法高亮顯示會讓您看到變量鍵名稱一目瞭然。 – Jon 2012-03-21 15:03:18

+0

@iMoses你是否從編譯器得到任何注意,如果我使用它,爲什麼你說它更正確? – 2012-03-21 15:07:25

1

使用「雙引號」,而不是「單引號」。這樣$lang將被解析並替換爲相關的值。

0

使用雙引號,像這樣:

$condition_details["description_$lang"] 
+0

嗯,誰標記我失望......爲什麼? – SenorAmor 2012-03-21 14:57:30

+0

我也想知道,因爲我得到了相同的答案downvoted ... – 2012-03-21 15:05:30

+0

@SenorAmor:不是我downvote,但這裏的一個小問題是,通過不包括花括號在變量周圍它更容易代碼打破未來。 – Jon 2012-03-21 15:05:50

2

你可以存儲在這樣的陣列中的郎設置:

$lang['fr']['condition_details'] 

,所以你可以使用$lang[$selected_lang]['condition_details']