Есть ли способ ссылки на массив из массива? Это может иметь смысл в формате кода:
$array=array( "Key1"=>array( "Value1", "Value2" ), "Key2"=>&$this['Key1'] );
Я хочу, чтобы $array['Key2']
то же, что и $array['Key1']
. Я могу добавить $array['Key2']=&$array['Key1'];
после создания массива, но хотелось бы сохранить все это в одном блоке кода, если это возможно.
Я проверил документы по ссылкам, а также некоторые из них предлагают похожие вопросы и поиск «ссылки на php-массив».
Ответ на этот вопрос, как оказалось, – «Да». Однако он не является аккуратным синтаксисом, так как он использует своего рода подзапрос и оставляет текущую область, заполненную дополнительной ссылочной переменной.
Рассмотрим следующий код:
<?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's 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 );
Я был удивлен, что это сработало без ошибок, но это так – вот доказательство . Конечно, вы бы этого не сделали, но вы можете …
Невозможно сделать это в одном блоке, потому что вы еще не инициализировали переменную. То же самое с переменными класса. Чтобы сделать такую вещь, вам нужно будет создать любую переменную любым способом, а не использовать только ее ссылки, но ее использование памяти, так что еще раз, реальный ответ на ваш вопрос – невозможно 🙂