Joshua Dover
Joshua Dover

Reputation: 197

Using an array to set variable name

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

Upvotes: 2

Views: 104

Answers (4)

Charles Forest
Charles Forest

Reputation: 1045

$_SESSION[SELL_is_ . $damage_name . ]; 

should be

$_SESSION["SELL_is_" . $damage_name];

Upvotes: 1

redmoon7777
redmoon7777

Reputation: 4526

try:

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

Upvotes: 0

Halcyon
Halcyon

Reputation: 57729

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.

Upvotes: 1

karim79
karim79

Reputation: 342645

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.

Upvotes: 3

Related Questions