PHP变量作为数组或对象传递时不显示
这适用于简单变量。但它显示了带有复杂变量的空结果。我是不是遗漏了什么?或者还有别的办法。谢谢PHP变量作为数组或对象传递时不显示,php,arrays,variables,object,Php,Arrays,Variables,Object,这适用于简单变量。但它显示了带有复杂变量的空结果。我是不是遗漏了什么?或者还有别的办法。谢谢 #1. This works with simple variables. $object = "fruit"; $fruit = "banana"; echo $$object; // <------------ WORKS :outputs "banana". echo "\n"; echo ${"fruit"}; // <------------ This outputs "ba
#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".
#1。这适用于简单变量。
$object=“fruit”;
$fruit=“香蕉”;
echo$$object;// 不完全使用变量,但是如果您想使用变量作为变量名,eval应该可以工作
$path=“result['node']->id”;
eval(“echo$”$path.;”代码>来自
变量接受变量的值并将其视为变量的名称
问题在于result['node']->id
不是一个变量<代码>结果
是变量。如果打开PHP通知的错误报告,您将在输出中看到以下内容:
PHP注意:未定义变量:result['node']->id
这可以通过以下方式解决:
$path = "result";
echo "\n";
echo ${$path}['node']->id;
$path
周围的花括号是必需的
为了在数组中使用变量,必须解析
歧义问题。也就是说,如果您编写$$a[1]
,那么解析器需要
要知道您是想使用$a[1]
作为变量,还是想要$$a
作为变量,然后是该变量的[1]
索引。语法
解决这种歧义的方法是:${$a[1]}
第一种情况和
${$a}[1]
第二个
如果不存在,则该声明等同于
${$path['node']->id}
这将产生以下输出:
PHP Warning: Illegal string offset 'node' in /var/www/html/variable.php on line 18
PHP Notice: Undefined variable: r in /var/www/html/variable.php on line 18
PHP Notice: Trying to get property of non-object in /var/www/html/variable.php on line 18
我猜它将搜索名为result['node']->id的变量
,当然该变量不存在(不想说它无效),因此回音为空。那么,我该如何实现我需要的结果呢?您的要求非常接近eval()
函数的功能。然而,这仍然不是你想要的。我认为您无法实现这样的动态解析(而且我也不确定您为什么要这样做)。如果我们可以解析该字符串以将表达式求值为某个可赋值的结果,则会使eval()
变得多余(或功能较弱)。+1表示eval()。下面是一个类似问题的答案。检查这个