Кто-то, должно быть, уже нашел решение для этого. Мы используем PHP 5.2. (Не спрашивайте меня, почему.) Я написал класс PHP для отображения набора записей в виде таблицы / таблицы данных HTML, и я хочу расширить его, чтобы мы могли отсортировать таблицу данных по любому столбцу, выбранному пользователем. В приведенных ниже примерах данных нам может понадобиться отсортировать массив наборов записей по полям Name, Shirt, Assign или Age. Я позабочусь о части отображения, мне просто нужна помощь с сортировкой массива данных.
Как обычно, я запрашиваю базу данных, чтобы получить результат, перебираю результаты и помещаю записи в массив assciateiave. Таким образом, мы получаем массив массивов. (См. Ниже.) Мне нужно иметь возможность сортировать по любому столбцу в наборе данных. Однако я не буду знать имена столбцов во время разработки и не буду знать, будут ли столбцы строковыми или числовыми значениями.
Я видел множество решений для этого, но я не видел ХОРОШЕГО и ОБЩЕГО решения. Может кто-нибудь предложить способ сортировки массива наборов записей, который является ОБЩИМ и будет работать на любом наборе записей? Опять же, я не буду знать имена полей или типы данных во время разработки. Массив, представленный ниже, является ТОЛЬКО примером.
ОБНОВЛЕНИЕ: Да, я бы хотел, чтобы база данных выполняла сортировку, но этого просто не произойдет. Запросы, которые мы выполняем, очень сложны. (На самом деле я не запрашиваю таблицу символов Star Trek.) Они включают в себя объединения, ограничения и сложные предложения WHERE. Написание функции для выделения оператора SQL для добавления ORDER BY на самом деле не вариант. Кроме того, иногда у нас уже есть массив, который является результатом запроса, а не возможность выполнить новый запрос.
Array
(
[0] => Array
(
[name] => Kirk
[shrit] => Gold
[assign] => Bridge
)
[1] => Array
(
[name] => Spock
[shrit] => Blue
[assign] => Bridge
)
[2] => Array
(
[name] => Uhura
[shrit] => Red
[assign] => Bridge
)
[3] => Array
(
[name] => Scotty
[shrit] => Red
[assign] => Engineering
)
[4] => Array
(
[name] => McCoy
[shrit] => Blue
[assign] => Sick Bay
)
)