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


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

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

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

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