簡體   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