【问题标题】:can array values be accessed by variable variables?变量变量可以访问数组值吗?
【发布时间】:2011-07-01 05:16:47
【问题描述】:

我有一个数组,我只能通过变量变量正确访问它,如下所示:

$foo['bar'] = "pie";

$fixed_name_variable = "foo['bar']";

echo $$fixed_name_variable;

在 theroy echo 的 pie 中。除了它只是不返回任何东西。所以我需要知道这种方法是否真的可行,或者我是否需要重新考虑一下。

刚刚注意到。在第二行,条形应该用引号引起来吗?

【问题讨论】:

    标签: php variable-variables


    【解决方案1】:

    虽然我讨厌鼓励这种行为,但您可以使用eval 在有限的范围内实现您的目标。

    $foo['bar'] = "pie";
    $fixed_name_variable = "foo['bar']";
    
    $a = eval("return $$fixed_name_variable;"); 
    echo $a; //outputs "pie"
    

    【讨论】:

    • 如果我能想出另一种解决问题的方法,我很乐意接受!
    • 您能否再描述一下这个问题。开发人员社区是获得一些建议并可能重新评估更好解决方案的好地方。
    • 我更新了我上面的代码以使用return恕我直言,这是最坏中最好的
    • 基本上,我取一个存储在数据库中的变量名,如果它存在于代码中,则附加该值并对其进行处理。它是通用表单对象的一部分,并引入了存储的默认值。由于站点上的各种范围限制,我无法预测我将尝试访问哪个数组,因此我使用存储的名称作为变量变量来涵盖所有可能性。
    • 这个问题太广泛了,无法提供任何具体帮助。我猜你能得到什么。这是我得到的最好的。希望对您有所帮助。
    【解决方案2】:

    $foo[$key_var] 应该可以工作,除非我误解了你的问题?

    【讨论】:

      【解决方案3】:

      不,我认为这是不可能的。唯一可能(显然)是使用变量索引,并访问$foo[$bar]

      但是,无论如何,使用可变变量通常是非常糟糕的做法 - 特别是因为它们使调试和自动文档/变量查找变得非常困难。通常最好不要使用它们,而是使用数组。

      【讨论】:

      • 在这种特殊情况下,数组不是一个合适的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多