从一个数组中移除值与指定字符串匹配的元素

5

我有一个数组,看起来像这样:

Array ( [0] => 副总裁 [1] =>   [2] => 其他 [3] => 财务主管 )

我想删除值为 其他 的元素。

我尝试使用 array_filter 过滤这个单词,但 array_filter 也会删除所有空值。

我希望结果像这样:

Array ( [0] => 副总裁 [1] =>   [2] => 财务主管 )

这是我的 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);

我可以使用其他方法来过滤这个词吗?
4个回答

5

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);


4
foreach($sport_level_name_arr as $key => $value) {

  if(in_array($value, $bad_words)) {  
    unset($sport_level_name_arr[$key])
  }

}

这并没有像 OP 想要的那样重新编号数组。 - EdoDodo
嘿,EdoDodo 只需要使用PHP函数“array_values”, - wyman
这段代码在第四行的 unset 结尾处缺少了 ; - Salam

2

这将创建两个数组并找到它们的差异。在第二个数组中,我们将放置要排除的元素:

array_values(array_diff($arr,array("other")));

它将创建两个数组并找到它们的差异,在第二个数组中,我们将放置要排除的元素。 - Sreeraj

0
如果回调函数返回 true,则将输入中的当前值返回到结果数组中。PHP 手册 因此,您需要在您的 filter() 函数中执行 return true; 而不是 return $element;,以确保不会删除任何空值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接