来自字符串的 PHP 动态变量


PHP dynamic var from string

我知道PHP动态变量是如何工作的,我知道我可以访问对象属性,如 $object->{'somethingWith$var'};或喜欢$object->$var;

但我试图完成的是访问$object->property->subproperty$object和字符串$string = 'property->subproperty'; .

我试了$object->$string$object->{$string}$object->$$string哈哈哈,没有一个奏效。

有人知道如何做到这一点吗? :)

你可以写一个简单的函数,像这样:

function accessSubproperty($object, $accessString) {
    $parts = explode('->', $accessString);
    $tmp = $object;
    while(count($parts)) {
        $tmp = $tmp->{array_shift($parts)};
    }
    return $tmp;
}

没有办法这样做。

您必须首先分配$property = $object->$propertyName然后访问要$property->$subpropertyName的 var 。

在您的示例中,字符串property->subproperty将被视为显然不存在的变量名。

不起作用,因为您通过尝试完成的所有工作都是获得与$object->{'property'}->{'subproperty'}不同的$object{'property->subproperty'}

您可以做的是:

$ret = $object;
foreach (explode("->",$string) as $bit)
    $ret = $ret->$bit;

或者你将不得不去丑陋和邪恶的eval()(让反对票开始(:

eval("return '$object->$string;")