使用PHP删除数组中与特定字符串匹配的所有元素
我希望这真的很简单,我错过了一些明显的东西 我试图删除数组中与某个字符串匹配的所有元素。这是一个基本的一维数组使用PHP删除数组中与特定字符串匹配的所有元素,php,arrays,Php,Arrays,我希望这真的很简单,我错过了一些明显的东西 我试图删除数组中与某个字符串匹配的所有元素。这是一个基本的一维数组 array("Value1", "Value2", "Value3", "Remove", "Remove"); 我想和你在一起 array("Value1", "Value2", "Value3"); 为什么array_过滤器($array,“Remove”)不工作 谢谢。您需要回拨电话 array_filter($array, function($e){ return s
array("Value1", "Value2", "Value3", "Remove", "Remove");
我想和你在一起
array("Value1", "Value2", "Value3");
为什么array_过滤器($array,“Remove”)代码>不工作
谢谢。您需要回拨电话
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.
});
如果是一个固定字符串,您可以在此处使用:
$array = array_diff($array, array("Remove"));
对于更复杂的匹配,我显然会使用:
$array = preg_grep("/^Remove$/i", $array, PREG_GREP_INVERT);
// matches upper and lowercase for example
因为你用错了。参见示例。它接受回调<代码>数组过滤器($array,function($a){return$a!==“Remove”})代码>我理解示例使用函数,但我不理解它们返回的是什么?没有一种简单的方法可以不构建处理函数就完成它吗?@CraigWilson更简单的方法是使用PHP 5.3+匿名函数,如我上面的评论所示。简单,是的,魔术不需要你做任何事情-不。正则表达式对于大数据集通常速度较慢。@shiplu对于小数据集更是如此。regex编译只完成一次。这就是开销所在。PCRE对于字符串处理通常更快,在本例中可能也是数组处理,因为它的大部分操作都是C语言,而不是Zend VM中的PHP字节码。提示:您可能希望使用$array=array\u值($array)
用于重新索引,在array_diff
之后立即执行,以避免遇到未定义数组索引的PHP错误警告。非常感谢本教程!我的IDE对此表示不满,所以我添加了一个分号:returnstripos(“Remove”,$e)==false代码>