2011-05-25 55 views
0

我想過濾並從數組中刪除一個項目。是否有可能用array_filter()做到這一點?如何使用過濾器從數組中刪除項目?

//I want to delete these items from the $arr_codes 
$id = 1223; 
$pin = 35; 

//Before 
$arr_codes = Array('1598_9','1223_35','1245_3','1227_11', '1223_56'); 

//After 
$arr_codes = Array('1598_9','1245_3','1227_11', '1223_56'); 

謝謝!

+0

您的標準是動態的,還是總是'$ id = 1223'和'$ pin = 35'? – 2011-05-25 02:05:46

+0

動態對象,這只是一個例子。 – Racooon 2011-05-25 02:07:35

回答

3

你可以在array_search然後unset它找到你感興趣的值的索引。

$i = array_search('1223_35',$arr_codes); 
if($i !== false) unset($arr_codes[$i]); 
0

array_filter不接受userdata(參數)。 array_walk()呢。但是,沒有一個迭代器函數允許修改回調中的數組結構。

因此,array_filter()是合適的功能使用。但是,由於您的比較數據是動態的(根據您的評論),您將需要另一種方式來獲取比較數據。這可能是一個函數,全局變量,或者構建一個快速類並設置一個屬性。

這裏是一個使用函數的例子。

array_filter($arr, "my_callback"); 

function my_callback($val) { 
    return !in_array($val, get_dynamic_codes()); 
} 

function get_dynamic_codes() { 
    // returns an array of bad codes, i.e. array('1223_35', '1234_56', ...) 
}