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フィドルのセットアップを持っています:http: //phpfiddle.org/main/code/i4g-mdu私は遊んでいます。現在の形式では、単語をカテゴリに分類できますが、各カテゴリが一致する回数をカウントする方法がわかりません。追加のループや数えるのが簡単なものが必要なように感じますが、どこにあるのか正確にはわかりません。アドバイスをいただければ幸いです。前もって感謝します。

4

1 に答える 1

1

カウントを保存するために、別のデータ配列が必要になる場合があります。次のような配列を使用します。

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

次に、foreachループを反復処理するときに、$ keys [$ word]['category']を$countsのキーとして使用し、それをインクリメントできます。

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

次に、$ counts配列を返すことができるので、呼び出し元はそれを使用して、各テーマのカウントが何であったかを調べることができます。

return $counts;
于 2013-03-12T17:53:40.050 に答える