【问题标题】:Dynamically modify a static variable variable array动态修改静态变量变量数组
【发布时间】:2013-01-08 21:57:36
【问题描述】:

类似于这个问题 Dynamically call a static variable (array) ,但用于写入变量。

我试图在我的构造函数中初始化几个静态数组,但不知道如何动态编码它们的名称。

当我尝试这个时:

class MyClass {
    public static $something1 = array();
    public static $something2 = array();

    function __construct() {
        for( $i = 1; $i <= 2; $i++ ){
            $arr = "something{$dynamic}";
            self::$$arr[] = "a new element";
        }
    }
}

即使我不调用构造函数,我也会收到此错误:

Fatal error: Cannot use [] for reading

有什么方法可以在不使用 eval 的情况下完成此任务?我正在使用 PHP 5.4。

【问题讨论】:

  • 我不知道你为什么被否决。不是我。作为记录,您的答案是正确的:self::${$arr}[] = 'a new element';
  • 不,我的意思是,为什么您的问题被否决了?我觉得不应该。无论如何,我在下面添加了我的答案作为实际答案。
  • 你打赌。由于您表示我的回答是正确的,请通过单击赞成/反对票计数器旁边的复选框将其标记为正确。
  • 必须等待超时才能标记它。

标签: php class static variable-variables


【解决方案1】:

试试这个:

self::${$arr}[] = 'a new element';

大括号为$ 提供适当的范围

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 2020-07-13
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多