2012-01-11 216 views
2

我想在創建變量名的一部分時使用一些mysql數據來引用已在其他地方聲明的另一個變量。基本上我怎樣才能讓$ damage_name成爲if語句布爾檢查的一部分?使用數組設置變量名稱

$conditions = array(
     'bent_num' => 0, 
     'spine_torn' => 0, 
     'pages_torn' => 0, 
     'water_damage' => 0, 
     'pages_highlighted' => 0, 
     'pages_noted' => 0, 
     'taped' => 0, 
     'stained' => 0, 
     'mold' => 0, 
     'scratched' => 0 
     ); 
    while ($row = mysql_fetch_assoc($res)) 
    {   
     $damage_name = $conditions[$row['type']]; 

     if (isset($conditions[$row['type']]) && $_SESSION[SELL_is_ . $damage_name . ]; == 'y') 
     { 
      $condition_score = $condition_score - $row['value']; 
     } 
    } 

回答

3

破壞的語法和連接。嘗試:

$_SESSION['SELL_is_' . $damage_name]; 
  • SELL_is_需要加引號。
  • 您在$damage_name
  • 之後有一個額外的連接運算符在關閉方括號之後有一個額外的分號。
+0

哦真棒感謝 – 2012-01-11 21:21:31

1

我想你的意思:

$_SESSION[constant("SELL_is_" . $damage_name)] 

我假設SELL_is_是define d不變(因爲資本化)。要獲得定義的值,請使用全名,或使用constant

0

嘗試:

if (isset($conditions[$row['type']]) && $_SESSION["SELL_is_$damage_name"] == 'y') 
1
$_SESSION[SELL_is_ . $damage_name . ]; 

應該

$_SESSION["SELL_is_" . $damage_name];