使用数组设置变量名称

时间:2012-01-11 20:49:03

标签: php

我正在尝试使用一些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'];
        }
    }

4 个答案:

答案 0 :(得分:3)

语法和连接断开。尝试:

$_SESSION['SELL_is_' . $damage_name];
  • 需要引用SELL_is。
  • 您在$damage_name
  • 之后有一个额外的连接运算符
  • 关闭方括号后的额外分号。

答案 1 :(得分:1)

我认为你的意思是:

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

我假设SELL_is_是define d常数(因为大写)。要获取定义的值,请使用全名,或使用constant

答案 2 :(得分:1)

$_SESSION[SELL_is_ . $damage_name . ]; 

应该是

$_SESSION["SELL_is_" . $damage_name];

答案 3 :(得分:0)

尝试:

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