Как отсортировать следующий массив? - PullRequest
0 голосов
/ 02 мая 2011

Я получаю записи из базы данных, которая возвращает массив следующим образом:

Array
(
[0] => stdClass Object
    (
        [id] => 2
        [name] => ravi
        [text] => hey
        [date] => 2011-05-1
    )

[1] => stdClass Object

    (
        [id] => 3
        [name] => shiv
        [text] => bye
        [date] => 2011-04-29
    )

[2] => stdClass Object

    (
        [id] => 4
        [name] => adi
        [text] => hello
        [date] => 2011-04-30
    )
)

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

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

Вы должны отсортировать это перед тем, как на самом деле получить его, то есть использовать условие 'ORDER BY', уже содержащееся в запросе к вашей базе данных!

Почему?

  • , потому что вы пишете гораздо меньше кода
  • потому что он быстрее
  • потому что его проще реорганизовать
2 голосов
/ 02 мая 2011

Вам может пригодиться функция usort(): http://docs.php.net/manual/en/function.usort.php

Вы можете передать в качестве второго параметра следующую функцию:

function cmp($a, $b)
{
    if ($a->date == $b->date) {
        return 0;
    }
    return ($a->date < $b->date) ? -1 : 1;
}
1 голос
/ 02 мая 2011

В идеале вы должны сортировать внутри самого запроса, используя ...ORDER BY date ..

.. но если вы действительно хотите сделать это с php, посмотрите примечания пользователя в руководстве под sort , есть примеры того, как сортировать таким образом (и вы можете применять с помощью rsort () или asort () или arsort () в зависимости от того, хотите ли вы сохранить ключи или сортировать по убыванию или что-то еще)

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