2009-10-26 61 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 2009-10-26 12:50:37

相關問題