从数组中删除其值与指定字符串匹配的元素

问题描述 投票:0回答:4

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

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

并且我想删除值中带有

other
的值。

我尝试使用

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

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

php arrays filter
4个回答
8
投票

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

}

2
投票

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

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

0
投票

如果回调函数返回 true,则输入的当前值将返回到结果数组中。 PHP 手册

因此,您需要在

return true;
函数中执行
filter();
而不是
return $element;
以确保没有删除空值。

© www.soinside.com 2019 - 2024. All rights reserved.