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