Php 从字符串访问对象属性
我希望能够从单个字符串访问属性的值Php 从字符串访问对象属性,php,Php,我希望能够从单个字符串访问属性的值 $obj->Test->FGH = "Well Done!"; 我试过了 var_dump($obj->{'Test->FGH'}); 及 我知道,下面的代码可以工作,但它必须从字符串定义 var_dump ($obj->Test->FGH); 我也知道下面的方法会起作用,但它无法访问FGH财产 var_dump ($obj->{'Test'}); 那么,如何从字符串返回$obj->Test->FGH的值呢?您
$obj->Test->FGH = "Well Done!";
我试过了
var_dump($obj->{'Test->FGH'});
及
我知道,下面的代码可以工作,但它必须从字符串定义
var_dump ($obj->Test->FGH);
我也知道下面的方法会起作用,但它无法访问FGH财产
var_dump ($obj->{'Test'});
那么,如何从字符串返回$obj->Test->FGH的值呢?您需要递归地遍历对象结构,直到找到属性为止 这是一个递归函数,它完成了这项工作 仅当搜索的值不是对象时,它才起作用。如果要查找的属性是对象,则必须修改它,具体取决于
$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'));
它必须是一个单一的字符串不幸的是,不错的尝试虽然!我不明白,我改变了答案是字符串的第一部分始终是对象变量(即以
$
开头),其余部分是一系列属性名?
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'));