从字典中过滤数组值

时间:2011-05-02 12:15:28

标签: php arrays

我在PHP上有一个$数组,我想知道这些值是否来自特定字典。

例如,如果我的字典是一个值数组['cat','dog','car','man']我想过滤我的$数组并返回false如果一个单词进入这个不在字典上。

所以,如果$ array是:

['men', 'cat'] // return false;
['man', 'cat'] // return true;
['cat', 'dogs'] // return false;
[''] // return false;

依旧......

如何以这种方式过滤数组?

3 个答案:

答案 0 :(得分:1)

function checkDictionary($array,$dictionary){
  foreach($array as $array_item){
    if(!in_array($array_item,$dictionary)){
      return false;
    }
  }
 return true;
}

您还可以执行以下操作:

function checkDictionary($array,$dictionary){
$result =  (empty(array_diff($array,$dictionary))) ? true : false;
 return $result;
}

答案 1 :(得分:1)

function doValuesExist($dictionary, $array) {
    return (count(array_intersect($dictionary,$array)) == count($array));
}

答案 2 :(得分:1)

要提高性能,您应该将“词典”转换为关联数组,其中键是字典中的单词:

$dict = array_flip($dict);

然后你所要做的就是遍历你搜索的值,O(n)

function contains($search, $dict) {
    foreach($search as $word) {
        if(!array_key_exists($word, $dict)) {
            return false;
        }
    return true;
}

参考: array_fliparray_key_exists