2009-10-26 2 views
2

Я пытаюсь перехватить и элементы фильтра из набора классов массива $ это -> _ вары, в усеченную версии Smarty (не мой выбор: |)Могу ли я использовать array_filter() в массиве классов?

Вот что я пытаюсь использование:

функция обратного вызова класса

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")); 
} 

Теперь она, кажется, detectin g, которые находятся в массиве, а какие нет, поскольку я заменил возвращаемые данные на печать. Однако ничего не удаляется из массива. Есть ли способ сделать то, что я пытаюсь, или я пропустил что-то очевидное?

ответ

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; 
} 
+0

* смахивает голову - Я думал, что должно быть что-то пропустил. Большое спасибо! : D – robotmay

Смежные вопросы