2012-01-11 2 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

о удивительным спасибо –

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]; 
Смежные вопросы