Позвольте мне объяснить мою проблему с моим кодом. Это работает:
$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;
К сожалению, это не работает. Любая идея, как это решить?
Вы не можете инициализировать переменные-члены во все, что не является постоянным, и вы пытаетесь включить другой массив в качестве переменной-члена, что потребует выполнения выполнения.
Также обратите внимание, что имя класса Array
недопустимо, поскольку оно конфликтует с зарезервированным array
слов, используемым для создания массива.
Из руководства :
Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Обходным путем является установка переменной в конструкторе:
class Array2 { public static $multiarray = array( 'multikey1' => '', 'multikey2' => '', 'multikey3' => '' ); public $array; function __construct() { $this->array = array( 'key1' => '', 'key2' => self::$multiarray ); } }