2013-08-16 29 views
0

我正在爲貝葉斯過濾器編寫代碼。對於特定的單詞,我想檢查單詞是否在停用詞列表中,我從我的電腦上的文件的停用詞列表填充。 因爲我必須這樣做很多單詞,我不想一次又一次從我的電腦中讀取StopWord文件。php將文件內容讀入靜態數組

我想要做這樣的事情

function isStopWord($word){ 

     if(!isset($stopWordDict)) 
     { 
      $stopWords = array(); 
      $handle = fopen("StopWords.txt", "r"); 
      if($handle) 
      { 
       while(($buffer = fgets($handle)) != false) 
       { 
        $stopWords[] = trim($buffer); 
       } 
      } 
      echo "StopWord opened"; 
      static $stopWordDict = array(); 
      foreach($stopWords as $stopWord) 
       $stopWordDict[$stopWord] = 1; 
     } 

     if(array_key_exists($word, $stopWordDict)) 
      return true; 
     else 
      return false; 
    } 

我想用一個靜態變量,將解決這一問題,但事實並非如此。請幫助。

+0

這個函數是在一個循環中調用,還是它正在頻繁運行的頁面? –

回答

0

把靜態的聲明在函數的開頭:

function isStopWord($word){ 
    static $stopWordDict = array(); 
    if(!$stopWordDict) 
    { 
     $stopWords = file("StopWords.txt"); 
     echo "StopWord opened"; 
     foreach($stopWords as $stopWord) {   
      $stopWordDict[trim($stopWord)] = 1; 
     } 
    } 

    if(array_key_exists($word, $stopWordDict)) 
     return true; 
    else 
     return false; 
} 

這工作,因爲一個空數組falsy考慮。