2013-06-18 3 views
1

Почему этот код не в состоянииПочему я не могу ссылаться на ключи в результате этой функции PHP?

function f(){ 
    return array('k'=>'abc'); 
} 
print_r(f()['k']); 

и этот код работать?

function f(){ 
    return array('k'=>'abc'); 
} 
$a = f(); 
print_r($a['k']); 

Единственным отличием является присвоение результата f «s к $a, прежде чем пытаться получить доступ к элементам массива. Как я могу напрямую ссылаться на результат f без дополнительного назначения?

+0

я ударилась головой, но это сделало бы меня потерять больше braincells, чем я уже есть чтение об этой проблеме. – user2246674

+2

@user Hooray для языковых войн на SO! – deceze

+0

@deceze О, я смягчил его. Но это не война [без языка] без соперника. Я потратил достаточно времени на изучение другого «интересного» дизайнерского решения; хотя я думаю, что я * * узнал что-то новое: D – user2246674

ответ

6

Это доступно только в PHP 5.4. Он известен как разукрупнение массива. До 5.4 вам нужно сохранить возвращаемое значение, а затем получить доступ к элементам массива.

Docs

PHP 5.4.0 offers a wide range of new features:

  • Function array dereferencing has been added, e.g. foo()[0].

Если вы попробуете это на любой версии ниже 5.4, вы получите эту ошибку:

Parse error: syntax error, unexpected '[' on line ...

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