2014-11-03 2 views
1

안녕하세요. 나는 다차원 배열을 가지고있다PHP : 값 입력으로 배열 키 가져 오기.

Array ([0] => stdClass Object ([id] => 1 [title] => "Title1") 
     [1] => stdClass Object ([id] => 3 [title] => "Title2") 
     [2] => stdClass Object ([id] => 4 [title] => "Title3") 
    ) 

어떻게 배열로부터 값의 배열을 얻을 수 있는가?

예 : [id] => 1에서 [id] => 4 또는 0을 얻는 방법은 무엇입니까?

답변

1

나이브 검색 : 그것은 곧 그것을 발견으로 나누기로이 솔루션은 다른 답변보다 빠를 수 있다는 것을

$id = 4; 
foreach($array as $k=>$i) { 
    if ($i->id == $id) 
    break; 
} 

echo "Key: {$k}"; 

참고.

당신은, 원래 배열의 반복에 의해 인덱스에 ID를 매핑 할 수있는 새로운 배열을 만들 수 있습니다
+0

실전 테스트를 해 주셔서 감사합니다. 필요한 항목입니다. – RQEST

+0

"투표 업은 15 평판이 필요합니다." 나는 3 명 밖에 없다. – RQEST

0

:

$map = []; 
foreach($array as $key=>$value) 
    $map[$value->id]=$key; 

echo 'object with id 4 is at index ' . $map[4]; 
echo 'object with id 1 is at index ' . $map[1]; 

하나 개 이상의 ID를 검색 할 경우, 이것은 원래의 배열을 반복하는 것보다 더 효율적입니다 매번.

당신이 ojects에서 다른 데이터에 액세스하려면 인덱스 저장하는 INSEAD, 새로운 배열에 저장할 수 있습니다 다음 경우, 모든 객체를 통해

$objects = []; 
foreach($array as $obj) 
    $objects[$obj->id]=$obj; 

echo 'object with id 4 has the following title: ' . $obj[4]->title; 
echo 'object with id 1 has the following title: ' . $obj[1]->title; 
1
function GetKey($array, $value) { 
    foreach($array as $key => $object) { 
     if($object->id == $value) return $key; 
    } 
} 

$key = GetKey($array, 4); 

이 기능은 실행을 id가 여러분이 제공 한 것과 일치하면, 키를 반환합니다.