动态修改静态变量变量数组

Dynamically modify a static variable variable array

提问人:Greg 提问时间:1/9/2013 最后编辑:CommunityGreg 更新时间:1/9/2013 访问量:898

问:

与这个问题类似 动态调用一个静态变量(数组),但用于写入变量。

我正在尝试在我的构造函数中初始化几个静态数组,但无法弄清楚如何动态编码它们的名称。

当我尝试这个时:

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。

PHP 变量

评论

0赞 Greg 1/9/2013
我不知道你为什么被否决了。不是我。郑重声明,您的答案是正确的:self::${$arr}[] = 'a new element';
0赞 Madbreaks 1/9/2013
不,我的意思是,为什么你的问题被否决了?我觉得它不应该有。无论如何,我在下面添加了我的答案作为实际答案。
0赞 Madbreaks 1/9/2013
当然。既然你指出我的答案是正确的,请通过点击向上/向下投票计数器旁边的复选框来标记它。
0赞 Greg 1/9/2013
必须等待超时才能标记它。

答:

3赞 Madbreaks 1/9/2013 #1

试试这个:

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

大括号为$