繁体   English   中英

从字符串访问对象属性

[英]Accessing an Object Property from a string

我希望能够从单个字符串访问属性的值...

$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的值呢?

您需要递归遍历对象结构,直到找到该属性。

这是完成任务的递归函数。

仅当搜索到的值不是对象时才有效。 如果您要查找的属性是一个对象,则必须修改它,具体取决于$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'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM