PHP: массив для самостоятельной привязки
Есть ли способ ссылки на массив из массива? Это может иметь смысл в формате кода:
$array=array(
"Key1"=>array(
"Value1",
"Value2"
),
"Key2"=>&$this['Key1']
);
Я хочу, чтобы для $array['Key2']
выводилось то же самое, что и $array['Key1']
. Я могу добавить $array['Key2']=&$array['Key1'];
после создания массива, но хотел бы сохранить все это в одном блоке кода, если это возможно.
Я проверил документы по ссылкам, а также некоторые из них предлагают похожие вопросы и поиск "ссылки на php-массив".
Ответы
Ответ 1
Ответ на этот вопрос, как оказалось, - "Да". Однако он не является аккуратным синтаксисом, так как он использует своего рода подзапрос и оставляет текущую область, заполненную дополнительной ссылочной переменной.
Рассмотрим следующий код:
<?php
$array = array(
// Creates Key1 and assigns the value to it
// A copy of the value is also placed in $ref
// At this stage, it not a reference
"Key1"=>($ref = array(
"Value1",
"Value2"
)),
// Now Key2 is a reference to $ref, but not to Key1
"Key2"=>&$ref,
// Now everything is referenced together
"Key1"=>&$ref
);
Я был удивлен, что это работало без ошибок, но это делает здесь доказательство. Конечно, вы бы этого не сделали, но можете...
Ответ 2
Невозможно сделать это в одном блоке, потому что вы еще не инициализировали переменную. То же самое с переменными класса. Чтобы сделать такую вещь, вам нужно будет создать любую переменную любым способом, а не использовать только ее ссылки, но использовать память, так что еще раз реальный ответ на ваш вопрос - невозможно:)