有很多与此类似的问题,但这里略有不同,因为它是关于深度对象属性访问的,而不仅仅是一层深度.
There are many questions similar to this, however this is slightly different since it's about deep object property access, not just one level of depth.
假设我有一个包含字符串 foo.bar
的变量.
Let's say I have a variable containing the string foo.bar
.
$user = new User();
$user->foo = new Foo();
$user->foo->bar = "Hello World";
$variable = "foo.bar"
我想通过使用 $variable
来回显 $user->foo->bar
:
I would like to echo $user->foo->bar
by making use of $variable
:
echo $user->foo->bar
这是我迄今为止尝试过但没有成功的方法(它说 NULL):
This is what I have tried so far but with no success (it says NULL):
$value = str_replace(".", "->", $value);
echo $user->{$value};
使用可变属性符号($o->$p减少对象路径非常容易代码>):
It is very easy to reduce the object path using variable property notation ($o->$p
):
$path = 'foo.bar';
echo array_reduce(explode('.', $path), function ($o, $p) { return $o->$p; }, $user);
这很容易变成一个小的辅助函数.
This could easily be turned into a small helper function.
这篇关于如何访问在 php 中命名为变量(点表示法)的深层对象属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!