我可以在类数组上使用array_filter()吗?

时间:2009-10-26 10:57:05

标签: php arrays oop

我试图拦截和过滤类集数组中的项目,$ this-> _vars,在Smarty的精简版本中(不是我的选择:|)

以下是我一直试图使用的内容:

类回调函数

private function callback_check($var){
    if(!in_array($var['link_id'], $this->returned_array['items'])) return false;
    else return true;
}

阵列过滤器本身:

foreach($this->_vars['content']['documents'] as $group_key => $link_groups){
    array_filter($this->_vars['content']['documents'][$group_key]['links'], array(&$this, "callback_check"));
}

现在它似乎确实检测到哪些数组在数组中,哪些不是,因为我用要检查的打印替换了返回。但是,没有从阵列中删除任何内容。有没有办法做我正在尝试的事情,或者我错过了一些明显的东西?

1 个答案:

答案 0 :(得分:4)

我认为你错过了一些明显的东西;)

array_filter()不会过滤数组,它会返回一个新的过滤数组。鉴于您的代码段,您不使用返回的数组。尝试这样的事情:

foreach($this->_vars['content']['documents'] as $group_key => $link_groups){
    $filtered_array = array_filter($this->_vars['content']['documents'][$group_key]['links'], array(&$this, "callback_check"));
    $this->_vars['content']['documents'][$group_key]['links'] = $filtered_array;
}