如何使用过滤器从数组中删除项目?

时间:2011-05-25 02:00:30

标签: php arrays

我想过滤和删除数组中的项目。是否可以使用array_filter()?

//I want to delete these items from the $arr_codes
$id = 1223;
$pin = 35;

//Before
$arr_codes = Array('1598_9','1223_35','1245_3','1227_11', '1223_56');

//After
$arr_codes = Array('1598_9','1245_3','1227_11', '1223_56');

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用array_search然后unset找到您感兴趣的值的索引。

$i = array_search('1223_35',$arr_codes);
if($i !== false) unset($arr_codes[$i]);

答案 1 :(得分:0)

array_filter不接受userdata(参数)。 array_walk()。但是,迭代器函数都不允许修改回调中的数组结构。

因此,array_filter()是适当的功能。但是,由于您的比较数据是动态的(根据您的评论),您将需要另一种方式来获取比较数据。这可以是函数,全局变量,也可以构建快速类并设置属性。

以下是使用函数的示例。

array_filter($arr, "my_callback");

function my_callback($val) {
  return !in_array($val, get_dynamic_codes());
}

function get_dynamic_codes() {
  // returns an array of bad codes, i.e. array('1223_35', '1234_56', ...)
}