Às vezes, os resultados da consulta ao banco de dados não podem ser usados diretamente, como os resultados obtidos usando a instrução in no mysql, portanto, os resultados precisam ser classificados de alguma forma.
Exemplo 4. Classificando resultados do banco de dados
Neste exemplo, cada célula na matriz de dados representa uma linha em uma tabela. Esta é uma coleção típica de dados registrados em um banco de dados.
Os dados do exemplo são os seguintes:
volume |
-------+--------
67 |
86 |
85 |
98 |
86 |
67 |
Os dados são todos armazenados em uma matriz chamada data. Isso geralmente é obtido do banco de dados através de um loop, como mysql_fetch_assoc().
$dados[] = array('volume' => 67, 'edição' => 2);
$dados[] = array('volume' => 86, 'edição' => 1);
$dados[] = array('volume' => 85, 'edição' => 6);
$dados[] = array('volume' => 98, 'edição' => 2);
$dados[] = array('volume' => 86, 'edição' => 6);
$dados[] = array('volume' => 67, 'edição' => 7);
?>
http://sucai.knowsky.com/
Neste exemplo, o volume será ordenado em ordem decrescente e a edição será ordenada em ordem crescente.
Agora você tem um array com linhas, mas array_multisort() requer um array com colunas, então use o código a seguir para obter as colunas e depois classificá-las.
// Obtém a lista de colunas
foreach ($dados como $chave => $linha) {
$volume[$key] = $row['volume'];
$edição[$key] = $row['edição'];
}
//Organiza os dados em ordem decrescente de acordo com o volume e em ordem crescente de acordo com a edição
// Use $data como último parâmetro, classifique por chave comum
array_multisort($volume, SORT_DESC, $edição, SORT_ASC, $dados);
?>
A coleta de dados agora está ordenada e os resultados são os seguintes:
volume edição |
-------+--------
98 |
86 |
86 |
85 |
67 |
67 |