Это массив,Заполнение массива с самим его значением массива
$array = array(
'one' => 1,
'two' => 2,
'three' $array['one'] + $array['two']
);
Это получаю сообщение об ошибке, почему?
Это массив,Заполнение массива с самим его значением массива
$array = array(
'one' => 1,
'two' => 2,
'three' $array['one'] + $array['two']
);
Это получаю сообщение об ошибке, почему?
Потому что $array
не существует до окончания вашей декларации. Вы просто не можете определить массив таким рекурсивным образом, поскольку ссылаетесь на несуществующий ресурс.
Это рабочий вариант. В самом деле, не очень удобно, но рабочая:
<?php
$array = [
'one' => 1,
'two' => 2
];
$array['three'] = $array['one'] + $array['two'];
var_dump($array);
Выход очевидно:
array(3) {
'one' =>
int(1)
'two' =>
int(2)
'three' =>
int(3)
}
Единственный действительно элегантный способ обойти это требует довольно много усилий:
Вы можете реализовать a класс, реализующий интерфейс ArrayAccess
. Это позволяет вам реализовать, как свойства должны быть определены внутренне (например, эта сумма), сохраняя при этом доступ к этим свойствам через нотацию массива. Поэтому никакой разницы в массиве во время выполнения, только при настройке объекта. Однако это такое огромное усилие, что я сомневаюсь, что это стоит того> 99% случаев.
Вы используете переменную, которая объявляется, ее значение значения еще не известно. Вот как вы должны это написать:
$array = array(
'one' => 1,
'two' => 2,
);
$array['tree'] = $array['one'] + $array['two'];