2015-07-12 76 views
3

我想驗證數組中是否存在因子< = 2的levenshtein。所以:在PHP中結合levenshtein和in_array?

in_array("test", $some_array); 

到類似「是否在陣,如果萊文斯坦因素< = 2可以有誤差,通過比較」

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

這是可能的,或者我必須遍歷數組?

回答

3

這應該爲你工作:

您正在尋找array_reduce()。有了這個,你可以減少你的數組到一個單一的返回值。

您以FALSE作爲返回值開頭。然後循環遍歷每個數組元素,並檢查levenshtein()的返回值是否小於或等於2.

如果不是那麼您的返回值array_reduce()不會改變,並且仍然是FALSE。如果它小於或等於2,則將值更改爲TRUEarray_reduce()將返回TRUE

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

這是令人難以置信的。非常感謝! – Fane

+0

@Fane不客氣:) – Rizier123

+0

只是一個問題,我該如何區分函數運行併發送「測試」(這是一個變量,所以它改變)以及函數?我有 函數levenshteinArray($ keep,$ v){if(levenshtein($ v,$ have_this_variable(not_from_array_but_also_varies))<= 2)return $ keep = TRUE; \t \t \t \t return $ keep; } array_reduce($ array,「levenshteinArray」,FALSE);' – Fane