Самый эффективный способ индексирования возвращаемого массива?

function returnsAnArray () { return array ('test'); } echo returnsAnArray ()[0]; 

генерирует синтаксическую ошибку в PHP. Каков наиболее эффективный способ прямого получения элемента из возвращаемого массива без присвоения результата переменной temp?

Solutions Collecting From Web of "Самый эффективный способ индексирования возвращаемого массива?"

Вот один из способов, используя конструкцию языка списка

 function returnsAnArray () { return array ('test'); } list($foo)=returnsAnArray(); 

Вы можете захватить последовательность элементов из смещения, объединив это с array_slice

 list($third,$fourth,$fifth)=array_slice(returnsAnArray(), 2, 3); 

Определите новую функцию для возврата определенного индекса из массива.

 function arr_index($arr, $i) { return $arr[$i]; } 

Возможно, вы захотите добавить некоторую ошибку и проверить тип.

И затем используйте его так:

 echo arr_index(returnsAnArray(), 0); 

Счастливое кодирование 🙂

Это будет работать, если в массиве есть только один элемент:

  <?php echo current(returnsAnArray()); ?> 

Другой вариант:

 <?php echo reset(functionThatReturnsAnArray()); ?> 

Похожие темы: PHP: Можно ли ссылаться на один элемент массива, который возвращается функцией?

Для регулярных числовых индексированных массивов, где func () возвращает такой массив, а $ n – нужный вам индекс:

array_pop(array_slice(func(),$n,1));

Для ассоциативных массивов (например, строк или других вещей как ключей) или числовых массивов, которые не пронумерованы и не заполнены с 0..n, это немного более запутанно. Где ключ $ – это ключ, который вы хотите:

array_pop(array_intersect_keys(func(),Array($key => ""));

Это также будет работать в первом случае.

Вы можете сделать это для индексированного массива неизвестной длины.

  foreach (возвращаетAnArray () как $ item)
   echo $ item;

Я спрашиваю себя, почему нужно избегать создания временной переменной для возвращаемого массива. Почему бы вам просто не вернуть одно значение вместо целого массива? Возможно, вам придется переубедить свою логику программ.

Или это проблема производительности / памяти? Рассмотрите возможность использования ссылок вместо того, чтобы всегда создавать новый объект массива и возвращать его.