2013-06-18 2 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']); 

유일한 차이점은 배열의 요소를 액세스 해 $a-f의 결과에 할당된다. 추가 할당없이 직접 f의 결과를 참조하려면 어떻게해야합니까?

+0

을,하지만 그건 제가보다 더 braincells을 잃게 만들 것 이미이 문제에 대한 기사를 읽었습니다 .. – user2246674

+2

@user 언어 전쟁이 너무 만연합니다! – deceze

+0

@deceze 오, 나는 그것을 내 렸습니다. 그러나 그것은 상대방이없는 [언어] 전쟁이 아닙니다. 저는 다른 "재미있는"디자인 결정에 대해 배우는 데 충분한 시간을 낭비했습니다. 나는 새로운 것을 배웠다. D – user2246674

답변

6

이것은 PHP 5.4에서만 사용할 수 있습니다. 배열 역 참조으로 알려져 있습니다. 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].

,이 오류를 얻을 것이다 : 나는 내 머리를 칠 것

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

관련 문제