我试图让这段代码工作,但是我的生活无法实现......我想要一个显示你的意思的搜索。随着代码,我得到它“你的意思是:数组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'];
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
$ keyword是一个数组(一维),而不是一个列。你应该mysql_fetch_field你想要的列
答案 2 :(得分:0)
<?php
while ($keyword = mysql_fetch_array($result))
?>
$ keyword是一个数组!您的字词位于$ keyword [0]或$ keyword ['keyword']中。 用
替换你的第7行$bestMatch = array('word' => $keyword['keyword'], 'match' => $lev);
答案 3 :(得分: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'];