我希望能够从单个字符串中访问属性的值...
$obj->Test->FGH = "Well Done!";
我试过了
var_dump($obj->{'Test->FGH'});
和
var_dump( eval( '$obj->Test->FGH' ) );
我知道,以下内容可行,但必须从字符串中定义
var_dump ($obj->Test->FGH);
我也知道以下内容可行,但它不能访问FGH属性;
var_dump ($obj->{'Test'});
那么怎样才能从字符串中返回$ obj-> Test-> FGH的值?
答案 0 :(得分:0)
您需要递归迭代对象结构,直到找到属性。
这是一个完成工作的递归函数。
仅当搜索的值不是对象时才有效。如果您要查找的属性是对象,则必须修改它,依赖于$props
数组是否为空。
$props
参数的排序方式与嵌套对象属性的方式相同。
您也可以修改它以将字符串作为第二个参数,例如Test/FGH
function search_property($obj, $props) {
$prop = array_shift($props);
// If this is an object, go one level down
if (is_object($obj->$prop)) {
return search_prop($obj->$prop, $props);
}
if (!isset($obj->$prop)) {
return false;
}
return $obj->$prop;
}
$val = search_property($obj, array('Test', 'FGH'));