2012-10-13 36 views
1

你好!如何從STDObject中刪除數組?

我認爲它對那些在PHP中使用std對象和數組的家庭非常簡單的問題。

這裏是我的STD對象數組:

Array ([0] => stdClass Object ([name] => name1 [description] => [category_id] => 17 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 10) [1] => stdClass Object ([name] => name2 [description] => [category_id] => 8 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 0) [2] => stdClass Object ([name] => name3 [description] =>desc [category_id] => 10 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 0) [3] => stdClass Object ([name] => name3 [description] => [category_id] => 16 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 10)) 

現在,我有不同的排列與數字,例如:

$arr=array(17,10); 

,我需要檢查,如果這個數字恰好等於[category_id]值(在std對象內),如果相等,則檢查下一個[category_id],如果不是,則刪除此對象的所有值。 (當然,其它的方法是建立一個新的STD對象僅與陣列中的數字)

所以結果應該是:

Array ([0] => stdClass Object ([name] => name1 [description] => [category_id] => 17 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 10) [2] => stdClass Object ([name] => name3 [description] =>desc [category_id] => 10 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 0)) 

只有陣列與categiry_id = 17和10在這個stdObject裏面..

非常感謝您的幫助!

伊蘭。

回答

3

試試這個

$arr=array(17,10); 
foreach ($array as $key => $obj) { 
    if (!in_array($obj->category_id, $arr)) { 
    unset($array[$key]); 
    } 
} 
// edited, missing closing bracket 
+1

WOW你想要什麼,或者什麼!你是最棒的!!非常感謝!!! – EranLevi

1

您可以使用array_filter來過濾你不想

$filterCategory = array(17,10); 
$array = array_filter($yourArray,function($var) use($filterCategory) { return in_array($var->category_id, $filterCategory); });