Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量作为数组或对象传递时不显示_Php_Arrays_Variables_Object - Fatal编程技术网

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()。下面是一个类似问题的答案。检查这个