Ben bir sınıf dizisinde () array_filter kullanabilir miyim?

1 Cevap php

(Seçimim değil: |) Ben müdahale çalışılıyor ve bir sınıf set dizi üzerinden filtre ürün, $ this-> _VARS, Smarty bir aşağı elimden versiyonu

İşte ben kullanmaya çalışıyorsunuz oldum ne:

Sınıf geri arama işlevi

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

Ve dizi kendini filtre:

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

Şimdi ben kontrol etmek için baskılar ile döner yerini olarak, olanları dizisi ve hangi değildir içinde olduğu tespit edilebilir görünmektedir. Ancak, hiçbir şey dizisinden kaldırılır ediliyor. Ben denemeden yapıyorum, ya da belirgin bir şey kaçırmış olması için herhangi bir yolu var mı?

1 Cevap

Sana apaçık bir şey kaçırmış düşünüyorum ;)

array_filter() yerine dizi filtre değil, yeni bir filtre dizi döndürür. Senin kod parçacığı göz önüne alındığında, döndürülen dizi kullanmayın. Böyle bir şey deneyin:

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