简体   繁体   English

在PHP中将levenshtein与in_array结合起来?

[英]Combining levenshtein with in_array in PHP?

I want to verify if a levenshtein of factor <= 2 is present in an array. 我想验证一个数组中是否存在因子<= 2的levenshtein。 So: 所以:

in_array("test", $some_array);

to something like "check if in array, can have errors if levenshtein factor <= 2, by comparison" 对于“检查是否在数组中,如果levenshtein因子<= 2,可以有错误,相比之下”

levenshtein("test", $element_of_array_by_'in_array'_function);

Is this possible or do I have to iterate the array? 这是可能的还是我必须迭代数组?

This should work for you: 这应该适合你:

You are looking for array_reduce() . 您正在寻找array_reduce() With this you can reduce your array to one single return value. 有了这个,您可以将数组减少到一个单一的返回值。

You start with FALSE as return value. 您以FALSE开头作为返回值。 Then you loop through each array element and check if the return value of levenshtein() is smaller or equals 2. 然后遍历每个数组元素并检查levenshtein()的返回值是小于还是等于2。

If not then your return value of array_reduce() won't change and is still FALSE . 如果没有,则array_reduce()返回值不会更改,仍然为FALSE If it is smaller or equals 2 you change the value to TRUE and array_reduce() will return TRUE . 如果它小于或等于2,则将值更改为TRUEarray_reduce()将返回TRUE

array_reduce($some_array, function($keep, $v){
    if(levenshtein($v, "test") <= 2)
        return $keep = TRUE;
    return $keep;
}, FALSE);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM