Использование массивов по ссылке - PullRequest
0 голосов
/ 10 октября 2008

Почему следующий код "падает" в PHP?

$normal_array       = array();
$array_of_arrayrefs = array( &$normal_array );

end( $array_of_arrayrefs )["one"] = 1; // choking on this one

Ожидаемый результат состоит в том, что к окончательной строке кода добавляется $normal_array с ключом one, имеющим значение 1, но при этом нет никакого вывода, даже если он не печатает перед этим кодом. В реальном контексте этого сценария я использую функцию end (), чтобы всегда добавлять к последней ссылке на массив.

1 Ответ

3 голосов
/ 10 октября 2008

Это не приводит к сбою, просто содержит синтаксическую ошибку:

end( $array_of_arrayrefs )["one"] = 1;

К сожалению, вы не можете рассматривать возвращаемые значения функции как массивы в PHP. Вы должны назначить значение явно. К сожалению, здесь это не работает, потому что end делает копию возвращенного значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...