【问题标题】:Remove item from array if it exists in a 'disallowed words' array如果它存在于“不允许的单词”数组中,则从数组中删除它
【发布时间】:2010-12-16 06:28:36
【问题描述】:

我有一个数组:

Array
(
    [0] => tom
    [1] => and
    [2] => jerry
)

而且我还有一个不允许的单词数组:

Array
(
    [0] => and
    [1] => foo
    [2] => bar
)

我需要做的是删除第一个数组中也出现在第二个数组中的任何项目,例如,在这种情况下,需要删除键 1,因为 'and' 在不允许的单词数组中。

现在我现在有这段代码,它对不允许的单词进行 foreach,然后使用 array_search 查找任何匹配项:

$arr=array('tom','and','jerry');
$disallowed_words=array('and','or','if');
foreach($disallowed_words as $key => $value) {
    $arr_key=array_search($value,$array);
    if($arr_key!='') {
        unset($search_terms[$arr_key]);
    }
}

现在我知道这段代码很糟糕,我想知道是否有一种更有效的方法可以从另一个数组中存在的数组中删除和项,特别是如果它使用 foreach 进行否定。

非常感谢, 本

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    php中array_dif的使用://如果第二个数组中存在,它会从第一个数组中删除值。

     $foo = array(1, 5, 9, 14, 23, 31, 45);
     $bar = array(14, 31, 36);
     $data = array_diff($foo,$bar);
     print_r($data);
    

    【讨论】:

      【解决方案2】:

      你想要array_diff

      array_diff 返回一个包含 来自array1 的所有条目 不存在于任何其他 数组。

      所以你想要这样的东西:

      $good = array_diff($arr, $disallowed_words);
      

      【讨论】:

        猜你喜欢
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 2017-01-22
        • 2022-10-16
        • 2017-04-11
        • 1970-01-01
        相关资源
        最近更新 更多