2013-06-19 4 views
-1

배열에서 요소를 찾아야합니다. 나는 약 in_array() 방법을 알고 있지만, 배열의 이런 종류 작동하지 않습니다 내가 시도stdClass 객체 배열에서 요소를 찾으십니까?

Array 
(
[0] => stdClass Object 
    (
     [id] => 7 
    ) 

[1] => stdClass Object 
    (
     [id] => 11 
    ) 

[2] => stdClass Object 
    (
     [id] => 12 
    ) 
) 

:

if(in_array($id, $some_array)) { 
    echo "find"; 
} else { 
    echo "not exist"; 
} 

답변

2

배열이 아이디 등의,하지만 한 속성이 객체가 포함되어 있지 않기 때문에이다, id을했다.
데이터가 쿼리의 결과라고 가정 할 때, 아마도 object ATM으로 설정되어 있기 때문에 패치 모드를 변경하는 것이 좋습니다. 지금은

: 당신이 가져 모드로 엉망하지 않으려면 다른 방법

$msg = 'not found'; 
foreach($some_array as $obj) 
{ 
    if ($obj->id == $id) 
    { 
     $msg = 'found'; 
     break; 
    } 
} 
echo $msg; 

, 당신은 array_map 사용할 수 있습니다

function toArray($obj) 
{ 
    $obj = (array) $obj;//cast to array, optional 
    return $obj['id']; 
} 
$idArray = array_map('toArray', $some_array); 
if (in_array($id, $idArray)) 
{ 
    $msg = 'found'; 
} 

는 배열 함수 및 콜백 때까지 주변에 플레이 당신은 당신을 위해 일하는 무언가를 찾는다

+0

그것은 훌륭하다 =) –

0

당신은 foreach는 그것을 통해 루프 필요합니다.

0

단지의 배열을 통해 루프 및 확인 각 항목의 속성 :

foreach($some_array as $item) { 
    if($item->id === 11) { 
     // We've found item #11! 
    } 
} 
관련 문제