2014-01-16 4 views

답변

4

아니요, PHP5.4 이전 버전에서는이를 수행해야합니다.

배열 역 참조는 PHP 5.4에서 제공됩니다. 그냥 배열을 반환하는 경우 다음 임시 변수가 필요하다

$parent = getParent($child)->offsetGet(0)->user; 

:

그러나 경우

getParent ArrayAccess interface를 구현하는 객체를 반환, 당신은 그것을 체인 수 있습니다.

0

PHP 버전 < 5.4를 사용할 때 더 좋은 방법은 없습니다. 당신은 여전히 ​​대신이 한 줄을 사용하려는 당신은 항상 첫 번째 요소를 얻고 싶다면

, 당신은이 0으로 배열 포인터를 다시 다음

echo reset(getParent($child))->user; 

을 시도하고 값을 반환 할 수 있습니다.

+0

그것은 또한 때문에'E_STRICT' 경고를주는 몇 가지 표현 (들)을 확인하기 위해 "한 - 라이너"를 사용하도록 강요하고 디버거에 'getParent'의 반환 값은 참조로 전달됩니다. – Jon

1

사실, 입니다. 임시 변수가 없으면이를 달성 할 수 있습니다. (예, 아니오는 한 줄 그리고 그것은 임시 변수를 사용하지 않는,하지만, 때문에 - 그것은 읽을 수 없습니다이다) 그러나 나는 확실히 그것을 사용하는 것이 좋습니다하지 않을 것이다 : 버전의 경우

function getParent($child=null) 
{ 
    //mock: 
    return array(
     (object)(array('user'=>'foo', 'data'=>'fee')), 
     (object)(array('user'=>'bar', 'data'=>'bee')), 
    ); 
}; 

//array(null) will have 1 key, 0; 
//however, to get another offset N, use array(N => null) instead 
$result = array_shift(array_intersect_key(getParent('baz'), array(null)))->user; 

임시 변수를 사용 -SO < 5.4

어디 도움이 될 수있다 - 당신이