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',
]
  • Вопрос задан
  • 101 просмотр
Решения вопроса 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
)

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

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

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