@Utarzan123
backend

Как отсортировать строчку состоящую из цифр с разделителем?

есть массив строчек
10/22/300
10/21/300
9/5/5/6

нужно чтоб получилось

9/5/5/6
10/21/300
10/22/300


То есть сортировка должна быть по всем состоящим из подстроки данным. А вложенность может быть неограниченной.

Понятно, что для того чтобы получить эти подстроки нужно применить команду
$element = explode('/', $item);

Первый элемент, к примеру превратится в
[9,5,5,6]
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Fernus
@Fernus
Техник - Механик :)
Чёт не понял...так не канает?

<?php

$ar = [
    '10/22/300',
    '10/21/300',
    '9/5/5/6'
    ];

natsort($ar);

print_r($ar);

/* RESULT

Array
(
    [2] => 9/5/5/6
    [1] => 10/21/300
    [0] => 10/22/300
)

*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alexeyshi
@alexeyshi
Если я правильно понял задачу, то можно попробовать так:

$array = [
    '10/22/300',
    '10/21/300',
    '9/5/5/6'
];

usort($array, function($a, $b) {
    $a = array_sum(explode('/', $a));
    $b = array_sum(explode('/', $b));
    return ($a == $b ? 0 : ($a < $b ? -1 : 1));
});

print_r($array);


Идея состоит в том, что мы сортируем по сумме чисел, полученных из каждой строчки.

Но нужно потестировать на бОльшем количестве примеров.
Ответ написан
Ваш ответ на вопрос

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

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