2012-03-21 23 views
1

私は以下の機能を持っています。PHP関数内の変数の内部変数?

問題は、$ lang変数が$this->setts['site_lang'];によって異なります。実際の問題は次のとおりです。

$condition_details['description_$lang'] 

(これは機能しません)。どのように私は、これは$ LANGの設定に応じて

$condition_details['description_us'] 

または

$condition_details['description_fr'] 

を表示するのですか?代わりに「一重引用符」の

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

+0

@ iMoses:どのように正確に「もっと正確ですか?他のアプローチの主張は次のとおりです。基本的な構文の強調表示により、可変キー名が一目でわかるようになります。 – Jon

+0

@iMoses私がそうするのであれば、コンパイラからanynoticeを取得するのですか?それはもっと正しいと言いますか? –

1

使用「二重引用符」:ここ

とは、フル機能です。そうすれば$langが解析され、関連する値に置き換えられます。

0

二重引用符を使用使用することができます

$condition_details["description_$lang"] 
+0

ええと、誰かが私の印をつけたのはなぜ...? – SenorAmor

+0

私は同じ答えを下降させたので、それも知っておきたいと思います。 –

+0

@SenorAmor:私のdownvoteではありませんが、ここでは小さな問題は変数の中に中括弧を入れないことです。将来は壊れる。 – Jon

2

あなたはこのような配列では、あなたのLANGの設定を保存できます。

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

ますので、両方が動作しますが$lang[$selected_lang]['condition_details']