簡體   English   中英

從字典中過濾數組值

[英]filter array values from a dictionary

我在 php 上有一個 $array,我想知道這些值是否來自特定的字典。

例如,如果我的字典是一個值數組 ['cat', 'dog', 'car', 'man'] 我想過濾我的 $array 並返回 false 如果這個單詞中的單詞不在字典。

所以,如果 $array 是:

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

等等...

如何以這種方式過濾數組?

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;
}
function doValuesExist($dictionary, $array) {
    return (count(array_intersect($dictionary,$array)) == count($array));
}

為了提高性能,您應該將“字典”轉換為關聯數組,其中鍵是字典中的單詞:

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM