Php 通过变量访问对象属性
我以前见过这样的问题,但我的特殊情况似乎是有人奇怪,我无法解决它-任何洞察将不胜感激 我正在尝试访问具有可变值的对象属性,即Php 通过变量访问对象属性,php,Php,我以前见过这样的问题,但我的特殊情况似乎是有人奇怪,我无法解决它-任何洞察将不胜感激 我正在尝试访问具有可变值的对象属性,即 $foo = new Object(); $foo->first = 'bar'; $array = array(0 =>'first', 1 =>'second'); $var = 0; return $foo->{$array[$var]}; 这将抛出一个错误“注意:未定义的属性:stdClass::$first”。删除大括号将返回相同
$foo = new Object();
$foo->first = 'bar';
$array = array(0 =>'first', 1 =>'second');
$var = 0;
return $foo->{$array[$var]};
这将抛出一个错误“注意:未定义的属性:stdClass::$first”。删除大括号将返回相同的结果
我不明白什么?(下面是实际代码和错误-错误记录在Drupal监视程序日志中。)
注意:未定义的属性:
stdClass::$field\u portfolio\u district['und'][0]['nid']in
比较开始->加载调查问卷\u队列()
这就像一个符咒:
<?php
$foo = new StdClass();
$foo->first = 'bar';
$array = array(0 =>'first', 1 =>'second');
$var = 0;
echo $foo->{$array[$var]};
?>
但我怀疑这会起作用:
<?php
$foo = new StdClass();
$foo->first = array('a' => array('b' => 'test'));
$array = array(0 =>'first["a"]["b"]', 1 =>'second');
$var = 0;
echo $foo->{$array[$var]};
?>
这里的解决方案是eval(),但我强烈建议您不要使用eval或类似的方法。我只是想太花哨了。我要重构,请重构!通过字符串变量访问方法使调试变得非常困难。F.I.当使用变量访问函数时,不能在NetBean中使用“查找用法”。相信我,这可能是一个痛苦的屁股!
<?php
$foo = new StdClass();
$foo->first = array('a' => array('b' => 'test'));
$array = array(0 =>'first["a"]["b"]', 1 =>'second');
$var = 0;
echo $foo->{$array[$var]};
?>