@oldzas

Как удалить из массива все однокоренные слова?

Как удалить из массива все однокоренные слова, оставив по одному элементу из таких похожестей?

Пример массива:

[47] => панель
[48] => пенал
[49] => перелив
[50] => подвесная
[51] => подвесного
[52] => подвесное
[53] => подвесной

Видим, что одинаковый корень у следующих элементов:

[50] => подвесная
[51] => подвесного
[52] => подвесное
[53] => подвесной

Надо оставить в массиве только первый такой элемент, остальные удалить.

Спасибо.
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
function clearBySixFirstLetter($array) 
{
    $has = [];
    
    return array_filter(
        $array,
        function ($word) use (&$has) {
            $sixLetters = mb_substr($word, 0, 6);
            
            if (!in_array($sixLetters, $has)) {
                array_push($has, $sixLetters);
                return true;
            }
            
            return false;
        }
    );
}

clearBySixFirstLetter([
    'панель',
    'пенал',
    'перелив',
    'подвесная',
    'подвесного',
    'подвесное',
    'подвесной',   
]);

/*
Array
(
    [0] => панель
    [1] => пенал
    [2] => перелив
    [3] => подвесная
)
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
Вообще-то, корень в этих словах "вес".
Школьная программа.
Переделай вопрос
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы