2013-06-19 75 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本身,但只有1個屬性的對象,被稱爲id
假設您的數據是查詢的結果,請考慮更改獲取模式,因爲它可能設置爲objectATM。

現在:

$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! 
    } 
} 
相關問題