2010-06-26 5 views
2

내가 배열과 같은있다 : 나는 "필터"배열이 새로운 하나를 얻을 싶습니다필터 배열

$categories_array = array(
[0] => 'category_1', 
[1] => 'category_2', 
[2] => 'category_3', 
[3] => 'category_4' 
) 

.

$new_categories_array = array(
[1] => 'category_2', 
[2] => 'category_3', 
) 

가 어떻게이 결과를 수행 할 수 있습니다 예를 들어,이 같은 새로운 전용 'category_2'와 배열과 'category_3'을 가지고 싶습니다?

답변

2

예 :

$original = array('category_1','category_2','category_3','category_4'); 
$new  = array_diff($original, array('category_1', 'category_4')); 

print_r($new); 

출력 :

Array 
(
    [1] => category_2 
    [2] => category_3 
) 

분명 고양이 1 및 4를 포함하는 것 array_intersect 반환 배열을 사용. 내가 좀 더 일반적인 경우 기능을 원하는 경우 preg_grep, 당신의 예에서 좋은 솔루션입니다 동의 array_filter 보는 동안

+0

이것은 좋은 해결책이지만 제거 할 요소 대신 스크립트에 요소를 "저장"할 수 있습니까? – Pennywise83

+0

@Pennywise 업데이트 참조. 이 경우에'array_intersect'를 원한다. – Gordon

3
unset($new_categories_array[0]); 
unset($new_categories_array[3]);

트릭

+0

음 ... 그 작업을해야하지만 함수 어디에 쓰고 싶습니다 제외하지 않고 저장하려는 요소의 이름을 설정할 수 있습니다. 다음과 같이 표시됩니다. my_function ('category_2, category_3', $ original_array); – Pennywise83

0

사용 preg_grep 할 ..might :

$new_categories_array = preg_grep('/category_[23]/', $categories_array); 
+1

총계 초과 잔액 – Gordon