【问题标题】:Accessing an Object Property from a string从字符串访问对象属性
【发布时间】:2013-10-30 10:53:39
【问题描述】:

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

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

【问题讨论】:

  • 字符串的第一部分是否总是一个对象变量(即以$开头),其余部分是一系列属性名称?

标签: php


【解决方案1】:

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

这是一个完成这项工作的递归函数。

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

【讨论】:

  • 不幸的是,它必须是一个字符串,不过还是不错的尝试!
  • 何我不明白,我改了答案
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多