我想将变量用作未知深度的数组键。
示例:
$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]
解析为变量而不是多维数组。
答案 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]
。
多维数组加剧了歧义问题。我怀疑这是你可以解决的问题。