如何动态设置数组变量?

发布于 2024-12-18 05:07:14 字数 2101 浏览 0 评论 0原文

我对这段代码有疑问:

$a['i'] = 1;

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

它显示错误:

注意:未定义变量:test.php 第 6 行中的 $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

I have a problem with this code:

$a['i'] = 1;

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

It display an error:

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

Is it possible to create dynamic array variable?

Thanks for your time.

EDIT: In my example I am trying to edit an multidimensional array. There is a problem when I try to add data to my array (JSON). I don't have fixed dimension of array, it my be 2 or more dimension (I am building a model for Web form, and I want to add invalid value to JSON).

Now in one of the methods of Web form object I have code which checks repopulation object to add invalid value if needed.

I can not just add a value to JSON array, I need to edit it on multidimensional level.

For now I came up on solution to dynamically generate variable name and, then, edit it. If someone have solution it will be appreciated.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑梦风尘 2024-12-25 05:07:14

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

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

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

You can't do it that way, as PHP thinks you're looking for a variable with the name $a['i'], rather than the 'i' key in the $a array.

The proper, and conventional, way is to use a dynamic key/index instead:

$b = 'i';
echo $a[$b];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文