Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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-similar_text()函数返回不准确的结果?_Php_Function_Text - Fatal编程技术网

PHP-similar_text()函数返回不准确的结果?

PHP-similar_text()函数返回不准确的结果?,php,function,text,Php,Function,Text,我正在开发一个搜索引擎,为了过滤掉所有不好的结果,我将结果字符串与搜索查询进行比较,如果结果超过30%,则返回结果 我知道这很有效,我以前做过,很好。然而,出于某种奇怪的原因,它现在似乎返回了一些非常奇怪的结果。我已经玩了一段时间了,我就是想不出来 while ($stmt->fetch()) { $tmp_procent = similar_text("banana", "banana"); //if ($tmp_procent > 30) { $result[] = ar

我正在开发一个搜索引擎,为了过滤掉所有不好的结果,我将结果字符串与搜索查询进行比较,如果结果超过30%,则返回结果

我知道这很有效,我以前做过,很好。然而,出于某种奇怪的原因,它现在似乎返回了一些非常奇怪的结果。我已经玩了一段时间了,我就是想不出来

while ($stmt->fetch()) {
 $tmp_procent = similar_text("banana", "banana");
 //if ($tmp_procent > 30) {
  $result[] = array('id' => $id,
        'category_id' => $category_id,
        'example' => html($example),
        'example_name' => html($example_name));
 //}
 $procent_arr[] = $tmp_procent;
}
return $procent_arr;
正如您所看到的,我已经注释掉了IF语句,所以现在它返回所有结果。但这不是重点。。。如您所见,我正在比较两个完全相同的字符串(banana),然后返回它们

这是我打印结果后得到的结果:

Array
(
    [0] => 5
    [1] => 5
    [2] => 5
)
呃,什么?那是不对的!所有结果不都应该是100吗

有什么想法吗,伙计们

谢谢


哦,我用瑞典语拼写了“procent”,所以它没有拼写错误,以防你注意到。它返回3个结果的原因是因为它在数据库中找到了3个匹配项。

很难理解您试图做什么

我不知道它为什么会回来香蕉有6个字符。我想你打错了

请参阅,语法类似于文本($str1、$str2和$perc) 添加最后一个参数不会影响返回值。“香蕉”的返回值为6。 $perc是什么,它是对函数核心中公式结果的引用

(similar_characters/average of characters*100)
在你的例子中,这个值是100

$procent_arr = []; // Good practice to define your array out of the loop
while ($stmt->fetch()) {
    $tmp_procent = similar_text('banana', 'banana', $procent);
    if ($tmp_procent > 30) {
        $result[] = [
            'id' => $id,
            'category_id' => $category_id,
            'example' => html($example),
            'example_name' => html($example_name)
        ];
    }
    $procent_arr [] = $procent;
}
return $procent_arr;
返回值为:

[0]=>100
[1]=>100
[2]=>100

很难理解你想做什么

我不知道它为什么会回来香蕉有6个字符。我想你打错了

请参阅,语法类似于文本($str1、$str2和$perc) 添加最后一个参数不会影响返回值。“香蕉”的返回值为6。 $perc是什么,它是对函数核心中公式结果的引用

(similar_characters/average of characters*100)
在你的例子中,这个值是100

$procent_arr = []; // Good practice to define your array out of the loop
while ($stmt->fetch()) {
    $tmp_procent = similar_text('banana', 'banana', $procent);
    if ($tmp_procent > 30) {
        $result[] = [
            'id' => $id,
            'category_id' => $category_id,
            'example' => html($example),
            'example_name' => html($example_name)
        ];
    }
    $procent_arr [] = $procent;
}
return $procent_arr;
返回值为:

[0]=>100
[1]=>100
[2]=>100

根据,函数应该产生两个字符串中匹配字符的数量,并通过引用返回第三个参数中的百分比。然而,我仍然希望你的结果是一个
6
的数组,而不是
5
。哦,天哪。我不知道为什么它返回的是5而不是6,但它没有按预期工作的原因是因为我忘记添加最后一个参数。现在它就像一个符咒(几乎,我还有一些其他问题,但我会自己解决)。谢谢你的提示!根据,函数应该产生两个字符串中匹配字符的数量,并通过引用返回第三个参数中的百分比。然而,我仍然希望你的结果是一个
6
的数组,而不是
5
。哦,天哪。我不知道为什么它返回的是5而不是6,但它没有按预期工作的原因是因为我忘记添加最后一个参数。现在它就像一个符咒(几乎,我还有一些其他问题,但我会自己解决)。谢谢你的提示!