@issssrt

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

Сабж не очень понятный, поясню детальнее
Есть некий массив в котором есть поле сортировки:
Array
(
    [0] => Array
        (
            [title] => 1507540823
            [sort] => 100
        )

    [1] => Array
        (
            [title] => 1507540823
            [sort] => 110
        )

    [2] => Array
        (
            [title] => 1507540823
            [sort] => 120
        )

    [3] => Array
        (
            [title] => 1507540823
            [sort] => 200
        )

    [4] => Array
        (
            [title] => 1507540823
            [sort] => 210
        )

)

Нужно получить вот что:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [title] => 1507540905
                    [sort] => 100
                )

            [1] => Array
                (
                    [title] => 1507540905
                    [sort] => 110
                )

            [2] => Array
                (
                    [title] => 1507540905
                    [sort] => 120
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [title] => 1507540905
                    [sort] => 200
                )

            [1] => Array
                (
                    [title] => 1507540905
                    [sort] => 210
                )

        )

)


Т.е. минимальный шаг сортировки 10. Нужно все элементы у которых значение сотировки : 100,110,120,190 записывать в отдельный массив или элемент многомерного массива как в примере. 200,210 итд в другой элемент
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Kokoulin
Php senior developer
$result = [];
foreach ((array)$array as $arr) {
    if ($arr['sort'] < 200) {
        $result[0][] = $arr;
    } else {
        $result[1][] = $arr;
    }
}
Ответ написан
Комментировать
@SharuPoNemnogu
не язык плохой, программисты такие...
//если надо сперва сделать сортировку
usort($arr, function($a, $b) {
    return $a['sort'] === $b['sort'] ? 0 : ($a['sort'] < $b['sort'] ? -1 : 1);
});

$divisor  = 100;
$res = [];
foreach ($arr as $subArr) {
    $res[intdiv($subArr['sort'], $divisor)][] = $subArr;
}
//если php < 7, то меняем intdiv на floor и /
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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