2011-11-26 83 views
0

我有此代码的问题:如何动态设置数组变量?

$a['i'] = 1; 

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

它显示一个错误:

Notice: Undefined variable: $a['i'] in test.php on line 6

是否有可能创建动态数组变量?

感谢您的时间。

编辑:在我的例子中,我试图编辑一个多维数组。当我尝试将数据添加到我的数组(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 
+0

尝试'回声$ B;'。 – mc10

+0

@ mc10:回声字符串'$ a ['i']'。 – BoltClock

+0

你可以使用'eval($ b);',但使用'eval()'是邪恶的。 – mc10

回答

1

你不能那样做,因为PHP会认为你正在寻找一个变量名称为$a['i'],而不是$a阵列中的'i'关键。

正确,和常规的,方式是使用一个动态密钥/索引来代替:

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

在对象方法中,我试图编辑数组。引用该数组时存在一个问题,因为该数组是多维的,并且我将递归地进行。我得到的解决方案是动态访问它并向数组添加一些数据。有什么建议么? –