2012-01-11 4 views
1

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

e.g. 
$arr = find_student(); 
echo $arr['name']; 

// I want to be able to do 
echo find_student()['name'] 

Как я могу выполнить то же самое? Без другой строки кода?

+0

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

+0

Подождите несколько недель/месяцев для PHP 5.4, который (я считаю) действительно допускает этот синтаксис –

ответ

6

Вы не можете. Парсер синтаксиса PHP ограничен и не разрешает его в текущих версиях.

PHP-разработчики расширили парсер для будущих выпусков PHP. Вот ссылка на blog talking about it

2

Вы наклоняю :)

function find_student() {return array('name'=>123);} 
echo find_student()['name']; 

Результат: Анализировать ошибка: синтаксическая ошибка, неожиданный '[', ожидая '' или ';'

2

Вы можете сделать что-то похожее, используя ArrayObject.

function find_student() { 
//Generating the array.. 
$array = array("name" => "John", "age" => "23"); 

return new ArrayObject($array); 
} 

echo find_student()->name; 
// Equals to 
$student = find_student(); 
echo $student['name']; 

Даунсайд это вы не можете использовать встроенные функции массива как array_merge() на этом. Но вы можете получить доступ к своим данным, как по массиву, и как к объекту.

+0

yep, я думаю, это один из способов сделать это. Спасибо –

+0

Кроме того, если вы хотите использовать функции массива, вы можете просто сделать это: (array) find_student(); – Prof83

Смежные вопросы