【发布时间】:2014-12-13 17:48:09
【问题描述】:
这适用于简单的变量。但它显示带有复杂变量的空结果。我在这里错过了什么吗?还是有其他方法。谢谢。
#1. This works with simple variables.
$object = "fruit";
$fruit = "banana";
echo $$object; // <------------ WORKS :outputs "banana".
echo "\n";
echo ${"fruit"}; // <------------ This outputs "banana".
#2. With complex structure it doesn't. am I missing something here?
echo "\n";
$result = array("node"=> (object)array("id"=>10, "home"=>"earth", ), "count"=>10, "and_so_on"=>true, );
#var_dump($result);
$path = "result['node']->id";
echo "\n";
echo $$path; // <---------- This outputs to blank. Should output "10".
【问题讨论】:
-
我猜它会搜索一些名为
result['node']->id的变量,当然那个变量不存在(不想说它无效),因此回显为空。 -
那么,我将如何获得我需要的结果?
-
您的要求与
eval()函数可以做的非常接近。然而,它仍然不是你想要的。我认为您无法实现这样的动态解析(而且我不确定您为什么要这样做)。如果我们可以解析该字符串以将表达式评估为某个 assignable 结果,那么它将使eval()变得多余(或不那么强大)。 -
+1 用于 eval()。请参阅下面的答案
-
有一个类似问题的答案。检查这个stackoverflow.com/questions/2036547/…
标签: php arrays variables object