2012-03-12 4 views
0

을 바탕으로, 배열에서 특정 데이터 가져 오기를 나는이 이러한 값을 출력하는 배열 : 이제또 다른 가치

Array ( 
    [0] => stdClass Object ( 
     [ID] => 6585 
     [COLOR] => red 
     [Name] => steve 
     ) 
    [1] => stdClass Object ( 
     [ID] => 5476 
     [COLOR] => blue 
     [Name] => sol 
     ) 
    [2] => stdClass Object ( 
     [ID] => 7564 
     [COLOR] => yellow 
     [Name] => jake 
     ) 
    [3] => stdClass Object ( 
     [ID] => 3465 
     [COLOR] => green 
     [Name] => helen 
     ) 
    ) 

, 나는 사람의 ID를 알 것이다, 나는 그의 색상 값을 얻을 필요가 특정 값을 설정합니다. 가장 좋은 방법은 무엇입니까?

+0

어떻게이 형식으로 데이터를 가져오고 있습니까? 선호하는 방법은 ID를 배열의 키로 사용하여 $ arr [$ id] -> COLOR로 참조 할 수 있지만 현재 형식에서는 불가능합니다. –

+0

그것은 그것의 배열 키를 만들 수 있다는 의미입니다. 또한 이미 함수에 있으므로 함수에서 함수를 가질 수 없습니까? –

+0

가장 도움이 된 답변을 선택하십시오. – hakre

답변

4

뭔가 :

function getColorById($arr, $id){ 
    foreach($arr as $item){ 
     if ($item->ID == $id) 
      return $item->COLOR; 
    } 
    return "blah!"; 
} 

사용 편집

echo getColorById($arr, 3465); 같은 : 당신이 데이터를 가지고있는 방법은 액세스 시간을 둔화로 이어집니다. 더 나은 제안은 (이후 ID 고유 한 것), 당신은 오히려 당신의 배열에 열쇠로 줄 것입니다. 이제는 정수 인덱스가 있습니다. (당신이 제어 할 수 있습니다 것 이상의 일부 지역에서 수신하지 않는 경우) 아래 같은 것을 배열을 구축 : 아래

$arr = array(); 
$arr["ID_4634"] = <object>; 
+0

이 솔루션을 사용할 수는 있지만 데이터 크기가 커질수록 필요한 것보다 훨씬 느립니다. 데이터는 아마도 그가 필요로하는 방식으로 배열을 쿼리하도록 다시 포맷되어야합니다. –

+0

예! 당신은 맞습니다, 나는 다른 사람들이 그렇게했기 때문에 그것을 지적 할 필요가 없다고 생각했습니다. 또는 기다려, 나는 내 게시물을 업데이 트됩니다. 감사합니다 :) – SuperSaiyan

+0

안녕하세요, 그것은 이미 함수에 있으므로 우리는 함수에서 함수를 가질 수 없습니까? –

2

빠른 액세스를 위해 저장 방법을 변경하고 싶을 것입니다.

현재 형식을 사용하면 일치 항목을 찾을 때까지 요소를 반복하고 색상을 비교해야합니다.

for($i=0;$i<count($array);$i++){ 
    if($array[$i]['ID'] == $id) 
    return $array[$i]['COLOR'] 
} 

또는 키로 ID를 저장하십시오. 이 같은

+1

이것은 'ID'가 아닌 색상으로 검색합니다. – Chris

+0

@Chris oh missed : p fixed. – Pheonix

0

IDTry :

for($i=0; $i<count($array); $i++) 
{ 
    if($array[$i]['ID'] == $id) 
    return $array[$i]['COLOR']; 
} 
1
$users = array(); 
$count = count($arr); 
for ($i = 0; $i < $count; $i++) { 
    $users[$arr[$i]['ID']] = array(
     'Name' => $arr[$i]['Name'], 
     'COLOR' => $arr[$i]['COLOR'] 
    ); 
} 
echo $users[$id]['COLOR']; 

에 $ 편곡 배열을 나타냅니다 당신은 당신의 초기 게시물에서 출력했고 $ id는 당신이 접근하려고하는 색깔의 사람의 ID입니다. 다음을 사용하여 이름을 얻을 수도 있습니다.

echo $users[$id]['Name'];