让我用我的代码解释我的问题。这有效:
$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;
不幸的是,这不起作用。知道如何解决这个问题吗?
答案 0 :(得分:1)
您无法将成员变量初始化为任何非常量的变量,并且您尝试将另一个数组包含为成员变量,这需要运行时执行。
另请注意,Array
类名称无效,因为它与用于创建数组的保留字array
冲突。
来自the manual:
这个声明可能包括初始化,但是这个 初始化必须是一个常量值 - 也就是说,它必须能够 在编译时进行评估,不得依赖于运行时 信息以便进行评估。
解决方法是在构造函数中设置变量:
class Array2 {
public static $multiarray = array(
'multikey1' => '',
'multikey2' => '',
'multikey3' => ''
);
public $array;
function __construct() {
$this->array = array(
'key1' => '',
'key2' => self::$multiarray
);
}
}