2012-07-17 2 views
0

가능한 중복 :
php explode and array indexPHP : 정적 함수에 의해 반환 된 배열의 첫 번째 요소에 액세스하는 방법

PHP 5.3에서

...

내가 가지고 항상 배열을 반환하는 동적 정적 메서드입니다. 어떤 경우에는 하나의 요소 만 포함하는 배열을 반환합니다. 한 문장으로 배열의 첫 번째 요소를 변수에 할당하려고합니다. 순간 나는이 작업을 수행해야한다 :

$user = User::findByEmail($_SESSION['email']); 
$user = $user[0]; 
echo $user; 

나는 부분을 피하려고 ...

$user = $user[0]; 

내가 일을 이런 식으로 뭔가를 기대 :

$user = User::findByEmail($_SESSION['email'])[0]; // not working 

또는

$user = User::findByEmail($_SESSION['email'])->get(0); // not working 

또는

$user = current(User::findByEmail($_SESSION['email'])); 

배열이 변수에 할당하지 않았기 때문에 기능을 사용하여 current() 항상 첫 번째 요소를 반환합니다 및 :

$user = User::findByEmail($_SESSION['email']).get(0); // not working 
+1

PHP 5.4가 없으면 피할 수 없습니다. 5.4는 array_shift (User :: findByEmail ($ _ SESSION [ 'email']))'를 호출하면'$ user = user :: findByEmail ($ _ SESSION [ 'email']) [0];' –

+0

' 그것은 배열 참조를 얻지 못하고있다. –

+0

두 개의 get() 버전은 findByEmail이 객체를 반환 한 경우에만 작동합니다. –

답변

2

편집

당신이 원하는 해결책은 이것이다 요점이 없습니다. 함수가 참조로 배열을 반환하는 경우에는 그렇지 않습니다.

+0

예, 완벽하게 내 필요, thx :) 아주 우아하지만. –

+0

@GuillaumeBois 우아하게 원한다면 PHP 5.4로 업그레이드하십시오. –

+1

이것은 오랫동안 저를 괴롭 히고 있습니다. 그리고''현재''는 실제로 함수가 반환 한 값을 사용할 때 배열에서 첫 번째 요소 (index [0]이 아님)를 검색하는 유일한 해결책입니다. –

2

(PHP 5.4 이전) 수 없습니다. 그것은 PHP 파서의 한계입니다. 최선의 선택 :

$user = User::findByEmail($_SESSION['email']); 
$user = $user[0]; 
관련 문제