Php 过滤数组
我有这样一个数组:Php 过滤数组,php,arrays,Php,Arrays,我有这样一个数组: $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', ) 我想“过滤”数组以获得一个新数组。例如,我希望有一个新数组,其中只
$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”,如下所示:
$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',
)
如何实现此结果?unset($new_categories_array[0]);
unset($new_categories_array[0]);
unset($new_categories_array[3]);
unset($new_categories_array[3]);
…可能会达到目的使用:
看
- -计算数组的差异
- -计算数组的交集
$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\u intersect
时,返回的数组显然将包含cat 1和cat 4。虽然我同意preg\u grep
在您的示例中是一个很好的解决方案,但如果您想要更通用的case函数,请查看array\u filter
-mmm。。。这应该行得通,但我想写一个函数,可以在其中设置要保存而不是排除的元素的名称。类似这样的东西:my_函数('category_2,category_3',$original_数组);这是一个很好的解决方案,但是否可以告诉脚本要“保存”的元素,而不是将要删除的元素?@Pennywise请参阅更新。在这种情况下,您需要array\u intersect
。