는 나는 다음과 같은 오류가PHP가 자동으로 배열로 함수 결과를 사용할 수 없습니다 (PHP 5.3)
getParent($child)[0]->user
같은 것을 실행하려고하면 같은 것을 할 :
$get_parent = getParent($child);
$parent = $get_parent[0]->user;
는 PHP로 할 수있는 더 좋은 방법이 5.3
는 나는 다음과 같은 오류가PHP가 자동으로 배열로 함수 결과를 사용할 수 없습니다 (PHP 5.3)
getParent($child)[0]->user
같은 것을 실행하려고하면 같은 것을 할 :
$get_parent = getParent($child);
$parent = $get_parent[0]->user;
는 PHP로 할 수있는 더 좋은 방법이 5.3
아니요, PHP5.4 이전 버전에서는이를 수행해야합니다.
배열 역 참조는 PHP 5.4에서 제공됩니다. 그냥 배열을 반환하는 경우 다음 임시 변수가 필요하다
$parent = getParent($child)->offsetGet(0)->user;
:
그러나 경우
는getParent
ArrayAccess interface를 구현하는 객체를 반환, 당신은 그것을 체인 수 있습니다.
PHP 버전 < 5.4를 사용할 때 더 좋은 방법은 없습니다. 당신은 여전히 대신이 한 줄을 사용하려는 당신은 항상 첫 번째 요소를 얻고 싶다면
, 당신은이 0으로 배열 포인터를 다시 다음
echo reset(getParent($child))->user;
을 시도하고 값을 반환 할 수 있습니다.
사실, 은입니다. 임시 변수가 없으면이를 달성 할 수 있습니다. (예, 아니오는 한 줄 그리고 그것은 임시 변수를 사용하지 않는,하지만, 때문에 - 그것은 읽을 수 없습니다이다) 그러나 나는 확실히 그것을 사용하는 것이 좋습니다하지 않을 것이다 : 버전의 경우
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
어디 도움이 될 수있다 - 당신이
그것은 또한 때문에'E_STRICT' 경고를주는 몇 가지 표현 (들)을 확인하기 위해 "한 - 라이너"를 사용하도록 강요하고 디버거에 'getParent'의 반환 값은 참조로 전달됩니다. – Jon