Php 变量名在另一个变量的名称内
我正在尝试做类似htis的事情Php 变量名在另一个变量的名称内,php,variables,Php,Variables,我正在尝试做类似htis的事情 foreach ($_POST as $key => $value) { $newNode->field_$key['und'][0]['value'] = $value; } php抱怨解析错误:语法错误,意外的T_变量 我试过了 foreach ($_POST as $key => $value) { $newNode->field_{$key}['und'][0]['value'] = $va
foreach ($_POST as $key => $value)
{
$newNode->field_$key['und'][0]['value'] = $value;
}
php抱怨解析错误:语法错误,意外的T_变量
我试过了
foreach ($_POST as $key => $value)
{
$newNode->field_{$key}['und'][0]['value'] = $value;
}
但随后密钥作为数组输出。不知道为什么
任何提示?变量名(以及对象属性)
要使其正常工作,请阅读有关的内容,正确的符号是
$newNode->{"field_".$key}
这应该行得通。但是正如@Furicane所说的,数组在这方面要好得多。如果我可以建议另一种方法的话,那就是使用数组。您不应该尝试动态创建变量名。为此,很久很久以前的优秀工程师在遥远的一年里发明了一种阵列 因此,要从现在开始解决您的问题,以及永远解决您的问题,请重写您的代码以使用:
$newNode->field[$key]['und'][0]['value'] = $value;
尝试使用变量作为完整属性名
foreach ($_POST as $key => $value)
{
$fieldName = "field_{$key}";
$newNode->{$fieldName}['und'][0]['value'] = $value;
}
+1完全正确。无论如何,数组已经被大量使用,所以添加另一个维度不会有什么坏处。这并不完全正确,因为存在动态访问属性的有效用例。后期静态绑定使许多构建良好的应用程序在PHP5.3中成为可能。但不要误解这一说法;通常一个数组是合适的。另外,如果你一次索引了那么多东西,你可能应该考虑一下你在做什么,并适当地添加一些类。谢谢你的提示,不幸的是,我的手被这一个束缚住了,因为我正在与Drupal一起工作,Drupal对字段使用这种符号,下面是一个例子:谢谢,这是一个赢家。4分钟后,我会将其标记为这样。:)这也是一个赢家。Pekka的解决方案在此之前就已经发布了,所以我会将其标记为正确的。感谢您的评论,我会仔细阅读。佩卡的解决方案有效,所以我现在就用它。