1

Тема: PHP: Анонимные массивы

Функция возвращает массив. Можно ли, не запоминая в переменной возвращаемое функцией значение-массив, на ходу получить его элемент. Например, если переписать

$request_headers = apache_request_headers();
echo $request_headers['User-Agent'];

одной строкой

echo apache_request_headers()['User-Agent'];

то чего в ней не хватает?

2

Re: PHP: Анонимные массивы

wigest пишет:

<...>одной строкой<...>то чего в ней не хватает?

Варианты решений. Неплохо бы уточнить, какой версии PHP, что за ос/"репы".
По ссылке пишут, что напрямую по имени обратиться нельзя (пока?), но в PHP5.4 можно обратиться к эл-ту возвращаемого массива через индекс (и в первом комментарии - "I've got PHP 5.4.11-1~precise+1 and this feature doesn't work! Got message in response Parse error: syntax error, unexpected '['" - либо сборщики пакета "накосячили", либо автор чего-то недоговаривает).
Т.е. как-то так ("пруф", 3-я строчка - "Function array dereferencing has been added, e.g. foo()[0]"):

echo apache_request_headers()[1];

Кстати,  м.б. в 5.5 и/или 5.6 что-нибудь добавили, "навскидку" упоминаний не нашёл.

PS: Попробовать особо негде (оч. давно ничего не пишу на PHP), и заранее прошу прощения за "некропостинг".

3

Re: PHP: Анонимные массивы

UNDYING пишет:

Неплохо бы уточнить, какой версии PHP

5.2.

Спасибо, подтверждаю, что при переключении на PHP 5.4,

wisgest пишет:
echo apache_request_headers()['User-Agent'];

начинает работать.

Есть и на русском:

PHP 5.4.0 предлагает широкий спектр новых возможностей:

  • Добавлена возможность разыменования массивов, возвращаемых функциями. Например: foo()[0].