我希望这很简单,我错过了一些明显的东西!
我正在尝试删除数组中与某个字符串匹配的所有元素。这是一个基本的一维阵列。
array("Value1", "Value2", "Value3", "Remove", "Remove");
我想以
结束array("Value1", "Value2", "Value3");
为什么array_filter($array, "Remove");
不起作用?
感谢。
答案 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.
});