0

私はこのコードを機能させようとしていますが、私の人生ではそれを実行できません...私はあなたが意味したことを示す検索が必要です。コードで私はそれをすべて手に入れました「あなたは意味しました:配列l:6」私がここに持っているものの何が問題になっていますか?

$my_word = $_REQUEST['value'];
$bestMatch = array('word' => $my_word, 'match' => 2);
$result = mysql_query("SELECT keyword FROM athena");
while ($keyword = mysql_fetch_array($result)) {
    $lev = levenshtein ($keyword, $my_word, 1, 2, 1);
    if (!isset($lowest) || $lev < $lowest) {
       $bestMatch = array('word' => $keyword, 'match' => $lev);
       $lowest = $lev;
     }
 }
 if ($bestMatch['match'] > 0)
   echo 'Did you mean: <strong>'.$bestMatch['word'].'</strong> l:'.$bestMatch['match'];
4

4 に答える 4

4

levenshtein()キーワードの代わりに、検索結果セット全体を関数に渡します。

while ($row= mysql_fetch_array($result)) {
    $lev = levenshtein ($row['keyword'], $my_word, 1, 2, 1);
    if (!isset($lowest) || $lev < $lowest) {
       $bestMatch = array('word' => $row['keyword'], 'match' => $lev);
       $lowest = $lev;
    }
}
于 2012-07-04T14:07:32.203 に答える
1

$keyword は配列 (1 次元) であり、単一の列ではありません。必要な列を mysql_fetch_field する必要があります

于 2012-07-04T14:12:59.833 に答える
0

PeeHaaとjeroen既に述べたように、MySQL の結果は配列を返します。

捨てて何が入っているか見てみよう

if ($bestMatch['match'] > 0) {
  var_dump($bestMatch['word']);
  echo 'Did you mean: <strong>'.$bestMatch['word'].'</strong> l:'.$bestMatch['match'];
}

ほとんどの場合、そこに別の [ ] があるため、これでうまくいく可能性があります。

echo 'Did you mean: <strong>'.$bestMatch['word'][0].'</strong> l:'.$bestMatch['match'];
于 2012-07-04T14:11:28.260 に答える
0
<?php
while ($keyword = mysql_fetch_array($result))
?>

$keyword は配列です! あなたの単語は $keyword[0] または $keyword['keyword'] にあります。7行目を次のように置き換えます

$bestMatch = array('word' => $keyword['keyword'], 'match' => $lev);
于 2012-07-04T14:08:55.660 に答える