php将文件内容读取到静态数组

时间:2013-08-16 23:51:54

标签: php static

我正在为贝叶斯过滤器编写代码。对于一个特定的单词,我想检查单词是否在停用词列表中,我从停用单词列表中填写我的电脑上的文件。 因为我必须为许多单词执行此操作,所以我不想一次又一次地从我的电脑中读取StopWord文件。

我想做这样的事情

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;
  }

我认为通过使用静态变量可以解决问题,但事实并非如此。请帮助。

1 个答案:

答案 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;
}

这将起作用,因为空数组被认为是假的。