0

让我用我的代码解释我的问题。这有效:

$multiarray = array(
    'multikey1' => '',
    'multikey2' => ''
);
$array = array(
    'key1' => '',
    'key2' => '',
    'key3' => '',
    'key4' => $multiarray 
);
print_r($array);

这不起作用:

class Array {

    public static $multiarray = array(
        'multikey1' => '',
        'multikey2' => '',
        'multikey3' => ''
    );

    public $array = array(
        'key1' => '',
        'key2' => self::$multiarray
    );
}

$array = new Array;

不幸的是,这不起作用。知道如何解决这个问题吗?

4

1 回答 1

1

您无法将成员变量初始化为任何非常量,并且您正在尝试将另一个数组作为成员变量包含在内,这需要运行时执行。

另请注意,Array类名无效,因为它与array用于创建数组的保留字冲突。

手册

这个声明可能包括一个初始化,但这个初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖于运行时信息才能被评估。

解决方法是在构造函数中设置变量:

class Array2 {
    public static $multiarray = array(
        'multikey1' =>  '',
        'multikey2' =>  '',
        'multikey3' =>  ''
    );

    public $array;

    function __construct() {
        $this->array = array(
            'key1'  =>  '',
            'key2'  =>  self::$multiarray
        );
    }
}
于 2012-12-13T18:10:52.743 回答