使用PHP删除匹配特定字符串的数组中的所有元素

时间:2012-12-29 02:30:30

标签: php arrays

我希望这很简单,我错过了一些明显的东西!

我正在尝试删除数组中与某个字符串匹配的所有元素。这是一个基本的一维阵列。

array("Value1", "Value2", "Value3", "Remove", "Remove");

我想以

结束
array("Value1", "Value2", "Value3");

为什么array_filter($array, "Remove");不起作用?

感谢。

2 个答案:

答案 0 :(得分:13)

如果它是一个固定字符串,您可以在这里使用array_diff

$array = array_diff($array, array("Remove"));

对于更复杂的匹配,我明显使用preg_grep

$array = preg_grep("/^Remove$/i", $array, PREG_GREP_INVERT);
// matches upper and lowercase for example

答案 1 :(得分:4)

您需要使用回调。

array_filter($array, function($e){
   return stripos("Remove", $e)===false
});

要正确理解上面的代码,请参阅此注释代码。

array_filter($array, function($e){
    if(stripos("Remove", $e)===false) // "Remove" is not found
        return true; // true to keep it.
    else
        return false; // false to filter it. 
});