GeorgeGeorge
@GeorgeGeorge
Студент

Как отсортировать массив по повторениям?

Есть массив:

['premium contact', 'premium contact 2', 'sport contact 2', 'sport vanco 2',]


Как отсортировать и получить другие массивы из одного, если есть повторения больше 5 символов в строке?
Пример сортировки

[
    'premium contact',
    'premium contact 2',
]
[
    'sport contact 2',
    'sport vanco 2',
]
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
Lorem Ipsum
Пример
$array = [
    'premium contact',
    'premium contact 2',
    'premium3 contact 3',
    'sport contact 2',
    'sport vanco 2'
];

$result = [];

foreach ($array as $item) {
    $key = substr($item, 0, 5);
    $result[$key][] = $item;
}

$result = array_values($result);

print_r($result);

/*
Array
(
    [0] => Array
        (
            [0] => premium contact
            [1] => premium contact 2
            [2] => premium3 contact 3
        )

    [1] => Array
        (
            [0] => sport contact 2
            [1] => sport vanco 2
        )

)
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ZZiliST
Изучаю JS, CSS, HTML, PHP
<?php
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');

sort($array1);
echo "Обычная сортировка\n";
print_r($array1);

natcasesort($array2);
echo "\nNatural order сортировка (без учета регистра)\n";
print_r($array2);
?>


Результат:

Обычная сортировка
Array
(
[0] => IMG0.png
[1] => IMG3.png
[2] => img1.png
[3] => img10.png
[4] => img12.png
[5] => img2.png
)

Natural order сортировка (без учета регистра)
Array
(
[0] => IMG0.png
[4] => img1.png
[3] => img2.png
[5] => IMG3.png
[2] => img10.png
[1] => img12.png
)

затем когда массив будет отсортирован прогнать его через цикл, разбивая каждый элемент на символы и сравнивая с предыдущим элементом, на совпадение символов. Если элементы совпадают, пушить в новый массив, если элементы не совпадают, создавать ещё один новый массив и пушить уже в него. Ну я бы так сделал, может есть более простой способ.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽