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

Cra*_*son 7 php arrays

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

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

array("Value1", "Value2", "Value3", "Remove", "Remove");
Run Code Online (Sandbox Code Playgroud)

我想结束

array("Value1", "Value2", "Value3");
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

mar*_*rio 13

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

$array = array_diff($array, array("Remove"));
Run Code Online (Sandbox Code Playgroud)

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

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

  • 提示:您可能想使用 `$array = array_values($array);` 进行重新索引,紧跟在 `array_diff` 之后,以免遇到未定义数组索引的 PHP 错误警告。 (2认同)

Shi*_*dim 5

您需要使用回调。

array_filter($array, function($e){
   return stripos("Remove", $e)===false
});
Run Code Online (Sandbox Code Playgroud)

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

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. 
});
Run Code Online (Sandbox Code Playgroud)