Сортировка многомерного массива по нескольким ключам - PullRequest
0 голосов
/ 28 января 2012

Привет Я уже некоторое время использую функцию array_sort() найдена здесь для сортировки результатов из нескольких API, но теперь мне нужно отсортировать по двум ключам одновременно.

Мне нужно отсортировать две клавиши: deal_score DESC и date_start DESC

Свойства этого массива следующие. Запись 2 имеет самый высокий deal_score, поэтому должен идти первым Записи 0 и 1 имеют одинаковые deal_score, но date_start выше в записи 1, поэтому конечный порядок результатов должен быть 2, 1, 0

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

       [0] => Array
            (
                [db_id] => 414314
                [date_start] => 2012-04-17
                [deal_score] => 81.3
                [deal_statements] => Array
                (
                    [0] => 49.85
                    [1] => 2.11
                )
            )

        [1] => Array
            (
                [db_id] => 414409
                [date_start] => 2012-04-20
                [deal_score] => 81.3
                [deal_statements] => Array
                (
                    [0] => 28.2
                    [1] => 21.41
                )
            )

        [2] => Array
            (
                [db_id] => 1345923
                [date_start] => 2012-04-17
                [deal_score] => 85
                [deal_statements] => Array
                (
                    [0] => 18.1
                    [1] => 22.16
                )
            )

Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

4 голосов
/ 28 января 2012

СТГ. как это должно сделать:

foreach ($data as $key => $row) {
    $score[$key] = $row['deal_score'];
    $dates[$key] = $row['date_start'];
}

array_multisort($score, SORT_ASC, $dates, SORT_ASC, $data);

третий. пример на http://php.net/manual/en/function.array-multisort.php в значительной степени объясняет это.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...