Как отсортировать массив PHP принятый из БД по определенному полю?

Имеется массив PHP включающий в себя таблицу из БД, мне надо его отсортировать по полю содержащее в себе дату. Как это сделать?(пробовал array_multisort но почему то выдало ошибку, может беда во мне?)

$today = date("Y-m-d"); // Формат даты делаем такой же как и в базе данных

$query = "SELECT * FROM `Полина` WHERE date >='$today'";

Ответы (3 шт):

Автор решения: Евгений Тихии

Вам нужна обычная сортировка, которую вы можете организовать в самом запросе при помощи ORDER BY. Уточните, какая сортировка необходима и приложите код.

$today = date("Y-m-d"); // Формат даты делаем такой же как и в базе данных
$query = "SELECT * FROM `Полина` WHERE date >='$today' ORDER BY date DESC"; // DESC - сортировка по убыванию, ASC - по возрастанию 
→ Ссылка
Автор решения: Quazimorda

В запросе и отсортируйте, если к запросу есть доступ. Средствами сервера БД такая сортировка ещё и проделана будет в разы быстрее, чем любой код на php, который вы напишите.

Что-нибудь вроде этого:

select * from table order by pole1

где table - имя таблицы, а pole1 - любое нужное вам для сортировки поле. И да, запрос я написал в очень упрощённом виде.

→ Ссылка
Автор решения: Dmitry

Стандартные функции PHP сортируют только одномерные массивы (например: [5, 10, 15, 30, 2, 14, 33]). Выборка из базы данных представляет многомерный массив, то есть что-то вроде:

Array(
  [0] => Array(
    'username' => 'John',
    'password' => '111111',
  ),
  [1] => Array(
    'username' => 'Bob',
    'password' => '222222'
  )
)

Средствами PHP сортировать многомерные массивы – не лучшая идея. Во-первых: это делается через костыли, а во-вторых: затраты по времени на сортировку многомерного массива значительно выше.

Как советовали выше, используйте выражение ORDER BY непосредственно в SQL-запросе:

$query = mysqli_query("SELECT * FROM `users` ORDER BY `registration_date`");

Оно умеет работать как с датами, с числами (в том числе с UNIX-time), так и со строками (сортируя по алфавиту).

Так же, Вы можете использовать данное выражение в сочетании с ASC/DESC, чтобы сортировать значения по возрастанию (ASC, по умолчанию) или по убыванию (DESC):

SELECT * FROM `users` ORDER BY `registration_date` DESC;

– вернёт список пользователей, отсортированных по полю "registration_date" в порядке убывания (то есть сначала - новых, ниже - старых).

→ Ссылка