如何动态设置数组变量?

时间:2011-11-26 20:04:50

标签: php arrays

我对此代码有疑问:

$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

1 个答案:

答案 0 :(得分:1)

你不能这样做,因为PHP认为你正在寻找一个名为$a['i']的变量,而不是'i'数组中的$a键。 / p>

正确而传统的方法是使用动态密钥/索引:

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