我在PHP上有一个$数组,我想知道这些值是否来自特定字典。
例如,如果我的字典是一个值数组['cat','dog','car','man']我想过滤我的$数组并返回false如果一个单词进入这个不在字典上。
所以,如果$ array是:
['men', 'cat'] // return false;
['man', 'cat'] // return true;
['cat', 'dogs'] // return false;
[''] // return false;
依旧......
如何以这种方式过滤数组?
答案 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;
}