Может ли свойство класса php быть равно другому свойству класса?

Я хочу сделать это:

class MyClass { var $array1 = array(3,4); var $array2 = self::$array1; } 

и $ array2 не работает.

У вас есть решение / трюк, чтобы свойство класса было равно другому свойству класса?

Благодарю.

Solutions Collecting From Web of "Может ли свойство класса php быть равно другому свойству класса?"

Согласно PHP Manual :

Значение по умолчанию должно быть константным выражением, а не (например) переменной , членом класса или вызовом функции.

То, что вы МОЛИТЬ:

 class MyClass { var $array1 = array(3,4); var $array2 = array(); function MyClass() { $this->array2 = $this->array1; } } 

Функция MyClass (или __construct если вы находитесь в PHP5) будет вызываться каждый раз при создании нового объекта, поэтому любые экземпляры MyClass будут иметь свойство array2 , имеющее то же значение, что и свойство array1 .

 $myclass = new MyClass(); print_r($myclass->array1); // outputs Array ( [0] => 3 [1] => 4 ) print_r($myclass->array2); // outputs Array ( [0] => 3 [1] => 4 ) 

Я новичок в PHP, но ответ от Paolo, похоже, просто инициализирует значения одинаковыми в конструкторе, но на самом деле это не означает, что обе переменные ссылаются на один и тот же контент. Как насчет этого:

 class MyClass { var $array1 = array(3,4); var $array2 = array(); function MyClass() { $this->array2 = &$this->array1; } } $myclass = new MyClass(); print_r($myclass->array1); // outputs Array ( [0] => 3 [1] => 4 ) print_r($myclass->array2); // outputs Array ( [0] => 3 [1] => 4 ) echo "<br />"; $myclass->array1[0] = 1; $myclass->array2[1] = 2; print_r($myclass->array1); // outputs Array ( [0] => 1 [1] => 2 ) print_r($myclass->array2); // outputs Array ( [0] => 1 [1] => 2 ) 

С добавлением ссылки оба значения свойств класса изменяются, когда они изменяются. Я что-то упускаю?

Оба ваших ответа, Паоло и безжалостный, отлично, спасибо вам большое!

Если я хочу, чтобы два свойства сохранялись в синхронизации:

 function MyClass() { $this->array2 = &$this->array1; } 

Если я хочу, чтобы два массива имели одинаковые значения изначально, но затем хотите изменить их индивидуально, я удаляю «&»:

 function MyClass() { $this->array2 = $this->array1; }