我遇到了这个问题。我有一堆数组决定运行时哪一个我想用双'$'。
因此,如果$foo
为'bar'
,我会使用$bar
获取数组$$foo
。
这很好但是如何获得$ bar的第一个元素? $ bar [0]就是这样,但$$foo[0]
根本不提供任何输出。
任何人都可以帮助我吗?
(我知道这是一个非常糟糕的风格,但代码已经由其他人完成了,我必须在这里和那里扩展它。我不打算重写所有的代码结构; - )
答案 0 :(得分:7)
在内部$foo
周围使用大括号:
echo ${$foo}[0];
当变量扩展中的子变量更复杂时,您可以这样做:
$array1 = array('a');
$array2 = array('b');
$array3 = array('c');
// writes 'abc'
for ($i = 1; $i <= 3; ++$i)
echo ${'array' . $i}[0];
答案 1 :(得分:3)
请不要这样做。 Variable-variables 总是是一个坏主意。有更好的方法来解决问题(如数组)。使用变量变量会使代码更模糊,更难理解。更不用说它可能带来的潜在安全影响。只要避免它们,从长远来看它会更好......
请注意,我只谈论变量变量,而不是变量对象成员和方法($foo->$bar
和$foo->$method()
)...我一直使用它们(尽管这有一些缺点)
答案 2 :(得分:2)
确实你是。我遇到了麻烦
我有一堆数组
那是你的问题
数组应该是ONE。嵌套的。
所以,你只需要
$data[$foo][0]
答案 3 :(得分:0)
$var = $$foo;
echo $var[0]; // do whatever you want with that