我有一个如下所示的数组:
Array ( [0] => Vice President [1] => [2] => other [3] => Treasurer )
我希望在值中删除other
的值。
我尝试使用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);
我可以使用其他方法来过滤这个词吗?
答案 0 :(得分:3)
foreach($sport_level_name_arr as $key => $value) {
if(in_array($value, $bad_words)) {
unset($sport_level_name_arr[$key])
}
}
答案 1 :(得分: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 :(得分:2)
这将创建两个数组并找到差异。在第二个数组中,我们将要排除的元素:
array_values(array_diff($arr,array("other")));
答案 3 :(得分:0)
如果回调函数返回true,则输入中的当前值将返回到结果数组中。 PHP Manual
因此,您需要在return true;
函数中执行filter();
而不是return $element;
,以确保不会删除任何空值。