2012-10-13 4 views
1

안녕하세요 !!STDObject에서 배열을 제거하려면 어떻게해야합니까?

나는 PHP에서 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)) 

: 여기

내 STD 개체 배열입니다

$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 시도하지 않으려는 당신이 원하는 또는 무엇 필터링 array_filter을 사용할 수 있습니다! 너는 최고야 !! 정말 고맙습니다!!! – EranLevi

1

당신은 당신이

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