2 つの異なる配列を比較したいと考えています。基本的に、私は自分のウェブサイトにフレーズを含むデータベースを持っており、ユーザーがフレーズを入力する検索機能を持っています。彼らが検索をクリックすると、ユーザーが入力した文字列を「分解」して配列に入れるPHPページがあります。次に、'explode' 関数も使用したデータベースからすべてのフレーズを取り出し、すべての単語を配列に分割します。ここで、すべての配列を比較して、各フレーズに一致する 3 つ以上の単語との密接な一致を見つけたいと考えています。
どうすればいいですか?
私が試したことは完全に失敗しましたが、ここに私が持っているものがあります
$search_term = filter_var($_GET["s"], FILTER_SANITIZE_STRING); //user entered data
$search_term = str_replace ("?", "", $search_term); //removes question marks
$array = explode(" ", $search_term); //breaks apart user entered data
foreach ($array as $key=>$word) {
$array[$key] = " title LIKE '%".$word."%' "; //creates condition for MySQL query
}
$q = "SELECT * FROM posts WHERE " . implode(' OR ', $array) . " LIMIT 0,10";
$r = mysql_query($q);
while($row = mysql_fetch_assoc($r)){
$thetitle = $row['title'];
$thetitle = str_replace ("?", "", $thetitle);
$title_array[] = $thetitle;
$newarray = explode(" ", $search_term);
foreach ($newarray as $key=>$newword) {
foreach($title_array as $key => $value) {
$thenewarray = explode(" ", $value);
$contacts = array_diff_key($thenewarray, array_flip($newarray));
foreach($contacts as $key => $value) {
echo $newword."<br />";
echo $value."<br /><hr />";
}
}
}
しかし、基本的には、ユーザーが検索ボックスに既に入力したものに似た提案されたフレーズを表示するだけです。したがって、「同じ値を持つ 2 つの配列を比較するにはどうすればよいですか?」と検索すると、「複数の配列を比較するにはどうすればよいですか?」のように、類似した表現の提案が 10 件表示されます。または「2つの配列を比較できますか」など...
基本的に、この質問をこのサイトに最初に投稿したときのように、役立つかもしれない他の質問がありました。私が使用しているこのコードは、もともと 1 つの単語または正確に一致する文字列に一致するものでしたが、一致する単語を見つけて、3 つ以上の一致する単語を持つフレーズのみを表示するように編集しています。