Получение элемента из массива PHP, возвращаемого функцией

Я не уверен, что это возможно, но я не могу понять, как это сделать, если это …

Я хочу получить определенный элемент из массива, который возвращается функцией, без предварительной передачи его в массив … вот так …

$item = getSomeArray()[1]; function getSomeArray(){ $ret = Array(); $ret[0] = 0; $ret[1] = 100; return $ret; } 

Какой правильный синтаксис для этого?

Solutions Collecting From Web of "Получение элемента из массива PHP, возвращаемого функцией"

PHP еще не может этого сделать, это известное ограничение. Вы имеете полное право задаваться вопросом: «Вы издеваетесь надо мной?». Сожалею.

Если вы не возражаете E_STRICT предупреждение E_STRICT вы всегда можете вытащить первый и последний элементы массива со reset и end соответственно – это означает, что вы также можете вытащить любой элемент, поскольку array_slice может организовать тот, который вы хотите остаются первыми или последними, но это, возможно, слишком далеко.

Но отчаяния нет: (в это время предстоящий) версия PHP 5.4 будет включать именно эту функцию (при разыменовании массива имен).

Обновление: я просто подумал о другой технике, которая будет работать. Вероятно, есть веская причина, что я никогда не использовал это или не видел, что он используется, но технически он выполняет эту работу.

 // To pull out Nth item of array: list($item) = array_slice(getSomeArray(), N - 1, 1); 

Синтаксис, о котором вы говорите, называется разыменованием функциональных массивов. Это еще не реализовано, и для него есть RFC .

Общепринятый синтаксис состоит в том, чтобы присвоить возвращаемое значение функции массиву и получить доступ к этому значению с помощью синтаксиса $array[1] .

Тем не менее, однако вы также можете передать ключ, который хотите, в качестве аргумента для вашей функции.

 function getSomeArray( $key = null ) { $array = array( 0 => "cheddar", 1 => "wensleydale" ); return is_null($key) ? $array : isset( $array[$key] ) ? $array[$key] : false; } echo getSomeArray(0); // only key 0 echo getSomeArray(); // entire array 

Да, php не может этого сделать. Bat вы можете использовать ArrayObect , например:

 $item = getSomeArray()->{1}; // Credits for curly braces for Bracketworks function getSomeArray(){ $ret = Array(); $ret[0] = 0; $ret[1] = 100; return new ArrayObject($ret, ArrayObject::ARRAY_AS_PROPS); } 

Ладно, возможно, не работает с цифровыми клавишами, но я не уверен.

PHP 5.4 добавил Arere Dereferencing , вот пример из документации PHP Array:

Пример # 7 Разделение разворота

 function getArray() { return ['a', 'b', 'c']; } // PHP 5.4 $secondElement = getArray()[0]; // output = a // Previously $tmp = getArray(); $secondElement = $tmp[0]; // output = a 

Я знаю, что это старый вопрос, но в вашем примере вы также можете использовать array_pop() чтобы получить последний элемент массива (или array_shift() чтобы получить первый).

 <?php $item = array_pop(getSomeArray()); function getSomeArray(){ $ret = Array(); $ret[0] = 0; $ret[1] = 100; return $ret; } 

Как говорят другие, нет прямого способа сделать это, я обычно просто назначаю его такой переменной:

 $items = getSomeArray(); $item = $items[1]; function getSomeArray(){ $ret = Array(); $ret[0] = 0; $ret[1] = 100; return $ret; } 

Я вполне уверен, что это невозможно сделать в PHP. Вы должны назначить возвращенный массив другому массиву, прежде чем сможете получить доступ к элементам внутри или использовать его непосредственно в какой-либо другой функции, которая будет выполнять итерацию по возвращенному массиву (т.е. var_dump (getSomeArray ())).