Сортировать данные с помощью функции сортировки или сортировать как извлеченные из базы данных? - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть список команд с соответствующими результатами.

$name[$i] содержит имена, а scores[$i] содержит соответствующие оценки

Мне нужно отсортировать команды по баллам, сохраняя при этом связь между баллами и соответствующим названием команды.

Мне интересно, лучше ли создавать многомерный массив, такой как $teaminfo[$name][$score] и использовать функцию сортировки или мне лучше сортировка данных, как они получены из базы данных с использованием sql?

Имеет ли значение, в какую сторону? Я ищу самый простой способ.

Ответы [ 2 ]

4 голосов
/ 29 февраля 2012

Вы избавите себя от целого мира головных болей, отсортировав его прямо из базы данных.Просто включите предложение ORDER BY в ваш SQL.

РЕДАКТИРОВАТЬ:

Если в настоящее время выполняется 2 запроса, то

SELECT first_table.*, second_table.* WHERE first_table.id = second_table.id 
ORDER BY second_table.score DESC

(или что-то еще!)

1 голос
/ 29 февраля 2012

Просто чтобы расширить ответ Джоша ...

Мне нужно отсортировать команды по счету ... многомерный массив, такой как $ teaminfo [$ name] [$ score]

WTF? Если команда может иметь только один результат, зачем пытаться сохранить одно значение в массиве? Вам нужен только простой массив (кстати: PHP-массивы не многомерны - они вложены):

$s=mysql_query("SELECT team, score FROM yourtable");
while($r=mysql_fetch_assoc($s)) {
   $data[$r['team']]=$r['score'];
}
arsort($data);

Однако сортировка данных в базе данных будет намного быстрее, чем возвращаться в PHP. ОТО, возможно, у вас может быть несколько значений для $ показателя для каждой команды $ - и мы не знаем, как они объединяются для определения порядка - по максимальному значению? в среднем? Всего? что-то другое? В этом случае вам может понадобиться подзапрос.

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