变量为数组键

时间:2014-10-16 17:25:01

标签: php arrays multidimensional-array

我想将变量用作未知深度的数组键。

示例:

$a = array();
$arrayKey = '[0][1]';

我想做的是替代:

$a[0][1] = "two levels deep";

${'a'.$arrayKey} = "two levels deep";

但它似乎无法发挥作用。

echo 'a'.$arrayKey;返回:a[0][1]

echo ${'a'.$arrayKey}返回two levels deep

但我仍然无法做到

${'a'.$arrayKey} = "two levels deep";
echo $a[0][1];

这甚至可能吗?似乎php将a[0][1]解析为变量而不是多维数组。

2 个答案:

答案 0 :(得分:2)

听起来像我一样,我必须使用eval,假设它已在您的php安装中启用。

这样的事情可能是:

$arrayKey = '[0][1]';
$a = array();
eval("\$a$arrayKey = 'hi there';");
print_r($a);
  

阵列(       [0] =>排列           (               1 =>嗨,您好           )

     

答案 1 :(得分:0)

  

这甚至可能吗?

对于一维数组,

表示多维数组。至少不单独使用变量变量。有关替代方案,请参阅duplicate question

来自variable variables上的PHP文档:

  

为了将变量变量与数组一起使用,您必须解决模糊问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是否打算将$a[1]用作变量,或者您希望$$a作为变量然后1来自该变量的索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

多维数组加剧了歧义问题。我怀疑这是你可以解决的问题。