2010-06-26 153 views
2

我有一个数组是这样的:滤波器阵列

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

我想“过滤器”的阵列来获得一个新的。例如,我想有只“category_2”这样一个新的阵列和“category_3”:

$new_categories_array = array(
[1] => 'category_2', 
[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 
) 

当使用array_intersect返回的数组将包含猫1和4明显。

+0

这是一个很好的解决方案,但它可以告诉脚本的元素“保存”,而不是将被删除的元素? – Pennywise83 2010-06-26 15:28:48

+0

@Pennywise看更新。在这种情况下你想要'array_intersect'。 – Gordon 2010-06-26 15:30:02

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

..might做的伎俩

+0

嗯...应该工作,但我想编写一个函数,其中我可以设置要保存的元素的名称,而不是排除。 类似这样的: my_function('category_2,category_3',$ original_array); – Pennywise83 2010-06-26 15:05:49

0

使用preg_grep

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

这是完全过量的 – Gordon 2010-06-26 15:30:44