2

我对 PHP 很陌生,所以请耐心等待。我正在尝试遍历文本字符串中的单词,查找特定单词,对它们进行分类,然后计算每个单词类别被击中的次数。我能够完成简单的部分,但我在计算每个类别匹配的次数时遇到问题。这是接受我的字符串的主要函数:

public function matchThemeTest($query){
    $marriageNum = 0;
    $criminalNum = 0;
    $contactNum = 0;
    $keywords = array(
        'background'=> array('category'=>'criminal'),
        'marriage'  => array('category'=>'marriage'), 
        'criminal'  => array('category'=>'criminal'),
        'arrest'    => array('category'=>'criminal'),
        'divorce'   => array('category'=>'marriage'),
        'person'    => array('category'=>'contact'),
        'contact'   => array('category'=>'contact')
    );
    foreach (preg_split("/\s/", $query) as $word)
    {
        if (isset($keywords[$word]))
        {
            echo $keywords[$word]['category'];
            if ($keywords[$word]['category'] == 'marriage') {
                $marriageNum++;
            }
            echo $marriageNum;
        }
    }
    //return reset($matches);
}

我在这里有一个 php fiddle 设置:http: //phpfiddle.org/main/code/i4g-mdu我一直在玩。以目前的形式,我可以将单词分类,但我不确定如何计算每个类别匹配的次数。我觉得我需要一个额外的循环或一些简单的计算,但我不确定在哪里。任何意见是极大的赞赏。提前致谢。

4

1 回答 1

1

您可能需要另一个数据数组来存储计数。使用这样的数组:

$counts = array(
    'criminal' => 0,
    'marriage' => 0, 
    'contact' => 0
); 

然后,当您遍历 foreach 循环时,您可以使用 $keywords[$word]['category'] 作为 $counts 中的键并递增它:

if(isset($keywords[$word]) {
    $counts[$keywords[$word]['category']]++;
}

然后您可以返回 $counts 数组,以便调用者可以使用它来找出每个主题的计数:

return $counts;
于 2013-03-12T17:53:40.050 回答