我试图拦截和过滤类集数组中的项目,$ 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"));
}
现在它似乎确实检测到哪些数组在数组中,哪些不是,因为我用要检查的打印替换了返回。但是,没有从阵列中删除任何内容。有没有办法做我正在尝试的事情,或者我错过了一些明显的东西?
答案 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;
}