Klaus
SEO Cthulhu
similar_text для array или как оставить логически уникальные строки в массиве
Есть некий набор текста в массиве, необходимо оставить уникальные значения в массиве, но не просто уникальные по набору знаков, а уникальные близко к человеческой логике.
т.е. необходимо справнить каждую строку с каждой, и если процент совпадения превышает скажем 80%, то оставить только одну(какую из них пока не важно на данном этапе)
вот что у меня получилось:
но.... при кол-ве значений в массиве более 500 (как у меня) - данный пример очень долго исполняется.
Помогите, пожалуйста, улучшить пример или направить на путь истинный
Есть некий набор текста в массиве, необходимо оставить уникальные значения в массиве, но не просто уникальные по набору знаков, а уникальные близко к человеческой логике.
т.е. необходимо справнить каждую строку с каждой, и если процент совпадения превышает скажем 80%, то оставить только одну(какую из них пока не важно на данном этапе)
вот что у меня получилось:
PHP:
$array1 = array("некий", "массив", "строк");
$array2 = $array1;
foreach($array1 as $key=>$value) {
foreach($array2 as $k=>$val) {
similar_text($array1[$key], $val, $prc);
if($key != $k && $prc > 80) {
$array2[$k] = ""; // unset нельзя - потеряем совпадение ключей
}
}
}
print_r($array2); // массив с логически уникальными строками
Помогите, пожалуйста, улучшить пример или направить на путь истинный