使用数组设置变量名称

I'm trying to use some mysql data in creating part of a variable name to refer to another variable already declared elsewhere. Basically how can I get the $damage_name be part of the if statement boolean check?

$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'];
        }
    }

Broken syntax and concatenation. Try:

$_SESSION['SELL_is_' . $damage_name];
  • SELL_is_ needs to be quoted.
  • You had an extra concatenation operator after $damage_name
  • An extra semicolon after the closing square bracket.

I think you mean:

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

I'm assuming SELL_is_ is a defined constant (because of the capitalization). To get the value of a define, either use the full name, or use constant.

try:

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

should be

$_SESSION["SELL_is_" . $damage_name];