2013-12-20 57 views
0

我有一組單詞和一組停用詞。我想要從停用詞數組中刪除那些單詞中的單詞,但代碼會返回所有單詞:使用array_filter過濾數組

function stopwords($x){ 
     return !preg_match("/^(.|a|car|red|the|this|at|in|or|of|is|for|to)$/",$x); 
    }; 

$filteredArray = array_filter($wordArray, "stopwords"); 

爲什麼?

+2

[Working](http://codepad.viper-7.com/mxhGZE)對我很好。 – Rikesh

+0

是的,它很酷。 –

+0

確保數組中的單詞在每個單詞的開始或結尾處沒有任何空格字符,以便「紅色」確實是「紅色」而不是「紅色」:注意空白字符可以包括換行符或其他不可見字符,所以檢查實際長度 –

回答

1
$wordArray = ["hello","red","world","is"]; 

function stopwords($x){ 
     return !preg_match("/^(.|a|car|red|the|this|at|in|or|of|is|for|to)$/",$x); 
    }; 

$filteredArray = array_filter($wordArray, "stopwords"); 
var_dump($filteredArray); 

# results out: 
array(2) { 
    [0] => string(5) "hello" 
    [2] => string(5) "world" 
} 

你認爲它會返回什麼?

您的輸入'$ wordArray'是字符串還是數組?

+0

雖然這是我的錯,代碼也沒問題,但我接受此解決方案以提供示例 – erdomester

0

//應當是數組
$ wordArray =陣列( '他', '是', '去', '到', '牀');

//應該返回布爾
功能禁用詞($ X)
{
回報的preg_match(「/ ^(|!一個|汽車|紅色|的|它在|或| |的|是|爲|至)$ /」,$ X);
}

//器陣列
$濾波器= array_filter($ wordArray, 「停止詞」);

//輸出
echo「< pre>」;
print_r($ filter);

//結果
陣列

[0] =>他
[2] =>去
[4] =>牀

0

試試這個..

$words = array('apple','boll','cat','dog','elephant','got'); 
     $stopwords = array('cat','apple'); 

     foreach($words as $k=>$v) 
     { 
     if(in_array($v,$stopwords)){ 
      unset($words[$k]); 
     } 

     } 
print_r($words);