2011-08-30 4 views
0

나는 MySQL 데이터베이스에서 사용자를 얻는 함수를 가지고 있습니다. 결과 행은 1 또는 여러 행이 될 수 있습니다.다차원 배열에서 요소를 그룹 해제하는 방법은 무엇입니까?

$result = array([0]=>array('foo'=>'bar')) 

을 그리고 나처럼 불쾌한 코드를 작성합니다 : : 제가 만 DB에서 한 결과를 얻을 찾고있을 때, 그것은 나에게 이런 멀티 dimentional 배열을 반환한다는 것입니다 귀찮게 무엇

$e = $result[0]['foo'] // instead of $result['foo'] 

나는, 내가 반환 한 행이 있는지 확인하고 그래서 내가 사용할 수있는 다음 $result에의 그룹화되지 않은 버전을 추가 할 수 있다면 멋진 것이라고 생각 많은 사람들이이 상황에 걸쳐 온 것을 확신 내가 1 행만 찾고있을 때. 그러면 다음과 같이됩니다.

$result = array(
[0] => array('foo'=>'bar'), // will keep the multi-dimentional version 
'foo' => 'bar' // and append the ungrouped version of $result here 
); 

어떻게 할 수 있습니까?

답변

3
if (count($result) === 1) 
{ 
    $result = $result[0]; 
} 
+0

+1 깨끗하고 깨끗한 +1, '$ result [0]'을 (를) 사용하면 불쾌 해 보이는 이유를 알 수 없습니다. –

0

API에 뭔가 이상한 소리가납니다.

는 데이터베이스 n 1에 결과를 반환 할 수있는 기능을 가지고 있다면, 그것 어레이 접근 (예 $result[0]['foo'])을 통해 액세스한다. 양자 택일로, 당신은 같은 임시 VAR에 결과를 저장할 수 :

$o = $result[0]; 
print_r($o['foo']); 

무엇을 요구하는지 것은 당신이뿐만 아니라 특별한 경우 기준, 수익 데이터를 munging하고 있다는 것이다 일의 문제 코드를 사용할 수있는 사람들에게 혼란 스럽지만 매우 일 가능성이 높습니다. 사용자가 $result의 0 번째 요소에 액세스 할 수없는 이유를 궁금해 할 수 있습니다.

단일 요소를 반환하는 함수는 단일 요소를 반환해야합니다. 여러 요소를 반환하는 함수는 여러 요소를 반환해야하며 특수한 경우에는 데이터가 변경되지 않아야합니다.

관련 문제