数组的变量变量

Variable variable for array

提问人:Julian 提问时间:7/29/2015 最后编辑:Julian 更新时间:7/29/2015 访问量:112

问:

我定义了一个数组。我想通过使用变量变量来获取此值。我试过这个,但没有成功:$array[1][1][test]="hello world"

$var1="array";
$var2="[1][1]";
$var3="['test']";

echo ${$var1}{$var2}{$var3};

输出为 。null

php 变量

评论

3赞 RiggsFolly 7/29/2015
请参阅变量手册页,但我认为您不能将指示放入此概念中。
0赞 Reagan Gallant 7/29/2015
因此,您声明了一个多维数组,并且想要显示这些值?
0赞 Phylogenesis 7/29/2015
如果你真的想这样做,你可以使用 .但是,我强烈建议不要这样做。echo eval("return \$$var1$var2$var3;")
0赞 RiggsFolly 7/29/2015
我只知道有人最终会到达。在考虑使用它之前,请阅读手册页面上的注意事项。我敢打赌,如果你退后一步,看看你的要求,你可以想出一些不使用的东西eval()eval()
1赞 vhu 7/29/2015
@RiggsFolly,是的,有点像.当你不知道自己在做什么时,它会造成很大的伤害,而当你有足够的知识使用它时,你知道你并不真正需要它。eval()goto

答:

0赞 Javi 7/29/2015 #1

我不明白你的问题

如果你得到 var 试试这个:

echo $array[1][1][test];

“更动态”:

$i = 1;
$x = 'test';

echo $array[$i][$i][$x];

评论

1赞 vhu 7/29/2015
OP 要求使用变量变量的解决方案。
0赞 vhu 7/29/2015 #2

PHP手册没有太彻底地介绍变量-变量数组索引的使用,但注释确实提到它们并不像你所发现的那样工作。

不过,提供了一些解决方法:

$array[1][1]['test']="hello world"

$var1="array";
$var2="[1][1]";
$var3="['test']";

$tmp=$var1.$var2.$var3;

eval('echo $'.$tmp.';');

以上结果是预期的“hello world”输出。也就是说,我会避免在任何代码中使用。eval()

不过,手册页上的注释(由 nick 在 customdesigns dot ca 上发布,日期为 2006 年)也提供了可以处理带有索引的变量数组的函数。

评论

0赞 RiggsFolly 7/29/2015
在考虑使用它之前,请阅读手册页面上的注意事项。
0赞 RiggsFolly 7/29/2015
昵称评论的不错链接。比eval()