Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 糟糕的levenshtein结果_Php_Levenshtein Distance - Fatal编程技术网

Php 糟糕的levenshtein结果

Php 糟糕的levenshtein结果,php,levenshtein-distance,Php,Levenshtein Distance,我有一个基于levenshtein的字符串比较函数,但它不能正常工作 function levenshteinTest($input, $array) { $shortest = -1; foreach ($array as $word) { $lev = levenshtein($input, $word); if ($lev == 0) { $closest = $word; $shortest = 0; break; } i

我有一个基于levenshtein的字符串比较函数,但它不能正常工作

function levenshteinTest($input, $array)
{
 $shortest = -1;
 foreach ($array as $word)
 {    
  $lev = levenshtein($input, $word);
   if ($lev == 0)
   {
    $closest = $word;
    $shortest = 0;
    break;
   }
   if ($lev <= $shortest || $shortest < 0)
   {
    $closest  = $word;
    $shortest = $lev;
   }
  }
 return $closest;
}
$test=array(
       "Richard Bürstmayr",
       "Sandra Ebner"
      );
var_dump(levenshteinTest("brstmyr", $test); //Sandra Ebner
var_dump(levenshteinTest("rd brstmyr", $test); //Richard Bürstmayr
正如你所看到的,我在第一次转储时得到了一个坏结果,但在第二次转储时得到了一个好结果。我认为这个问题与字长有关,但我真的不知道如何解决这个问题。
我的数组值至少包含两个字。

您不会得到wierd结果

通过做测试

我得到的Levenshtein距离小于数组中第二个结果的距离


请记住,Levenshtein distance是您必须对字符串进行的编辑计数,以使相应的字符串成为您要比较的字符串。

Well,$test=;不是有效的PHP语法。这是你正在使用的实际代码吗?我知道我得到了一个较小的距离,但你可以看到这应该是另一个结果。我想知道怎么做我知道你的意思,但是每个字符串上的字符数是不同的,这意味着这会影响你的Levenshtein距离。您可以使用php函数similor_text,它可以计算此处找到的相似性百分比