有许多与此类似的问题,但是这略有不同,因为它是关于深度对象属性访问的,而不仅仅是深度的一个级别。
假设我有一个包含字符串的变量foo.bar。
foo.bar
$user = new User(); $user->foo = new Foo(); $user->foo->bar = "Hello World"; $variable = "foo.bar"
我想$user->foo->bar通过使用以下内容进行回应$variable:
$user->foo->bar
$variable
echo $user->foo->bar
到目前为止,这是我尝试过的尝试,但没有成功(显示 NULL ):
$value = str_replace(".", "->", $value); echo $user->{$value};
使用可变属性符号()可以很容易地 减少 对象路径$o->$p:
$o->$p
$path = 'foo.bar'; echo array_reduce(explode('.', $path), function ($o, $p) { return $o->$p; }, $user);
这很容易变成小助手功能。