Php 如何动态设置数组变量?

Php 如何动态设置数组变量?,php,arrays,Php,Arrays,我对此代码有问题: $a['i'] = 1; $b = '$a[\'i\']'; echo $$b; 它显示一个错误: 注意:第6行test.php中的未定义变量:$a['i'] 是否可以创建动态数组变量 谢谢你抽出时间 编辑:在我的示例中,我试图编辑多维数组。当我尝试向数组(JSON)添加数据时出现问题。我并没有固定的数组维度,它可能是2个或更多维度(我正在为Web表单构建一个模型,我想向JSON添加无效值) 现在,在Web表单对象的一个方法中,我有一段代码,它检查重新填充对象以在需要时添

我对此代码有问题:

$a['i'] = 1;

$b = '$a[\'i\']';
echo $$b;
它显示一个错误:

注意:第6行test.php中的未定义变量:$a['i']

是否可以创建动态数组变量

谢谢你抽出时间

编辑:在我的示例中,我试图编辑多维数组。当我尝试向数组(JSON)添加数据时出现问题。我并没有固定的数组维度,它可能是2个或更多维度(我正在为Web表单构建一个模型,我想向JSON添加无效值)

现在,在Web表单对象的一个方法中,我有一段代码,它检查重新填充对象以在需要时添加无效值

我不能只向JSON数组添加一个值,我需要在多维级别上编辑它

现在,我想出了一个解决方案,动态生成变量名,然后编辑它。如果有人有解决方案,我们将不胜感激

private $form = array(
        'form_contact'=>array(
            'attr'=>array('tag'=>'FORM', 'method'=>'post'),

        'elem'=>array(

            'fs_contact'=>array(
                'attr'=>array('legend'=>'Kontakt', 'tag'=>'FSET'),
            'elem'=>array(

                'name'=>array(
                    'attr'=>array('SPAN'=>'Ime i prezime', 'title'=>'Unesite Vaše ime i prezime', 'tag'=>'INPUT', 'type'=>'text'),
                    'validat'=>array('req'=>'noscript', 'length'=>255),
                    'invalid'=>true), // Holds info that this is invalid
                'www'=>array(
                    'attr'=>array('SPAN'=>'Web sajt', 'title'=>'Unesite Vaš sajt', 'tag'=>'INPUT', 'type'=>'text'),
                    'validat'=>array('length'=>255)),
                'email'=>array(
                    'attr'=>array('SPAN'=>'E-mail', 'title'=>'Unesite Vaš email', 'tag'=>'INPUT', 'type'=>'text'),
                    'validat'=>array('req'=>'email', 'length'=>255)),
                'message'=>array(
                    'attr'=>array('SPAN'=>'Poruka', 'cols'=>'60', 'rows'=>'5', 'title'=>'Unesite Vašu poruku', 'tag'=>'TEXTA', 'value'=>'nesto'),
                    'validat'=>array('req'=>'all')),
                'submit_new_contact_form'=>array(
                    'attr'=>array('tag'=>'INPUT', 'type'=>'submit', 'value'=>'Pošalji poruku!'))
                ))// FS end
            )) // Form end      
        );// Array end

您不能这样做,因为PHP认为您正在查找名为
$a['i']
的变量,而不是
$a
数组中的
'i'

正确且常规的方法是使用动态键/索引:

$b = 'i';
echo $a[$b];

@mc10:它回显字符串
$a['i']
。您可以使用
eval($b)
,但使用
eval()
是有害的。请提供更多您真正想要解决的问题的上下文(您在下面的评论中提到的多维数组+递归)
eval($b)出现错误。甚至这也不起作用
eval(\$c=\$\$b;)
@mc10发布你的答案,eval(\$c=$b;);他正在工作。而lol for eval()是邪恶的!:)在对象方法中,我尝试编辑数组。引用该数组时有一个问题,因为该数组是多维的,我将递归地使用它。我得到的唯一解决方案是动态访问它并向数组中添加一些数据。有什么建议吗?