@oldzas

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

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

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

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

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

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

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

Спасибо.
  • Вопрос задан
  • 120 просмотров
Решения вопроса 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] => подвесная
)
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
Вообще-то, корень в этих словах "вес".
Школьная программа.
Переделай вопрос
Ответ написан
Delgus
@Delgus
Для новичка можно и так
sandbox.onlinephpfunctions.com/code/0ef20bd838b390...
$array = [
                47 => 'панель',
                48 => 'пенал',
                49 => 'перелив',
                50 => 'подвесная',
                51 => 'подвесного',
                52 => 'подвесное',
                53 => 'подвесной'
            ];

            $new_array = [];
            foreach ($array as $key => $value) {
                $new_key = mb_substr($value, 0, 6);
                if (!isset($new_array[$new_key])) {
                    $new_array[$new_key] = $value;
                }
            }
            $result = array_values($new_array);
            var_dump($result);

Вообще много способов
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы