php数组对象属性

时间:2012-12-13 18:08:00

标签: php arrays object properties

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

$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;

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

1 个答案:

答案 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
        );
    }
}