2011-07-01 21 views
5

匹配我有一個數組,看起來像這樣刪除元素。從一個數組,其值爲指定字符串

我嘗試使用array_filter過濾這個詞,但array_filter將刪除所有空值了。

我想要的結果是這樣的:

 
Array ([0] => Vice President [1] => [2] => Treasurer) 

這是我的PHP代碼過濾:

function filter($element) { 
    $bad_words = array('other'); 

    list($name, $extension) = explode(".", $element); 
    if(in_array($name, $bad_words)) 
    return; 

    return $element; 
} 

$sport_level_new_arr = array_filter($sport_level_name_arr, "filter"); 

$sport_level_new_arr = array_values($sport_level_new_arr); 

$sport_level_name = serialize($sport_level_new_arr); 

我可以用另一種方法來過濾這個詞?

回答

3
foreach($sport_level_name_arr as $key => $value) { 

    if(in_array($value, $bad_words)) { 
    unset($sport_level_name_arr[$key]) 
    } 

} 
+0

像OP想這不會重新編號數組。 – EdoDodo

+0

非常感謝你...你的腳本安全我...謝謝 – wyman

+0

嘿EdoDodo 只需要使用php函數「array_values」, – wyman

3

array_filter()是正確的功能。確保您的回調函數具有正確的邏輯。

嘗試以下操作:

function other_test($var) { 
    // returns whether the value is 'other' 
    return ($var != 'other'); 
} 

$new_arr = array_filter($arr, 'other_test'); 

注:如果你想重新索引數組,那麼你可以在上面後打電話$new_arr = array_values($new_arr);

2

這將創建兩個數組,並找到差異。在第二陣列我們將把元素排除:

array_values(array_diff($arr,array("other"))); 
+0

漂亮的代碼。它有什麼作用? – 2011-07-02 00:34:51

+0

它會創建兩個數組,並會發現差異,在第二個數組中,我們將要排除的元素 – Sreeraj

+0

感謝您的編輯,Phoenix – Sreeraj

0

如果回調函數返回true,從輸入端的電流值將返回到結果數組。 PHP Manual

所以,你需要做的return true;filter();功能,而不是return $element;,以確保沒有空值將被刪除。

相關問題