变量名称在另一个变量的名称内

时间:2011-10-06 19:25:29

标签: php variables

我正在尝试做类似htis的事情

foreach ($_POST as $key => $value)
    {
    $newNode->field_$key['und'][0]['value'] = $value;
    }

php抱怨Parse错误:语法错误,意外T_VARIABLE

我试过

foreach ($_POST as $key => $value)
    {
    $newNode->field_{$key}['und'][0]['value'] = $value;
    }

但是键输出为数组。不知道为什么。

任何提示?

4 个答案:

答案 0 :(得分:8)

如果我可以建议一种替代方法 - 即使用数组。您不应该尝试动态创建变量名称。为此,很久很久以前很久以前的优秀工程师发明了一个阵列。

所以,从现在开始和整个永恒解决你的问题 - 重写你的代码使用:

$newNode->field[$key]['und'][0]['value'] = $value;

答案 1 :(得分:6)

正确的表示法是

$newNode->{"field_".$key}

应该有用。但正如@Furicane所说,阵列对此非常好。

答案 2 :(得分:1)

尝试使用变量作为完整的属性名称。

foreach ($_POST as $key => $value)
{
    $fieldName = "field_{$key}";
    $newNode->{$fieldName}['und'][0]['value'] = $value;
}

答案 3 :(得分:0)

变量名(以及对象属性)cannot have $ in name

要实现这一目标,请阅读getters and setters with __get and __set