滤波器阵列
问题描述:
我有一个数组是这样的:滤波器阵列
$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',
)
我怎样才能做到这一点的结果?
答
见
-
array_diff
- 计算数组 -
array_intersect
的差异 - 计算交集Ø ˚F阵列
实施例:
$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明显。
答
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
答
虽然我同意preg_grep
是在你的例子很好地解决,如果你想要一个更一般的情况下的功能,看看array_filter
- http://ca.php.net/manual/en/function.array-filter.php
这是一个很好的解决方案,但它可以告诉脚本的元素“保存”,而不是将被删除的元素? – Pennywise83 2010-06-26 15:28:48
@Pennywise看更新。在这种情况下你想要'array_intersect'。 – Gordon 2010-06-26 15:30:02