Database query results sometimes cannot be used directly, such as the results obtained using the in statement in mysql, so the results need to be sorted in some way.
Example 4. Sorting database results
In this example, each cell in the data array represents a row in a table. This is a typical collection of data recorded in a database.
The data in the example is as follows:
volume | edition
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
The data is all stored in an array named data. This is usually obtained from the database through a loop, such as mysql_fetch_assoc().
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>
http://sucai.knowsky.com/
In this example, the volume will be sorted in descending order and the edition will be sorted in ascending order.
Now you have an array with rows, but array_multisort() requires an array with columns, so use the following code to get the columns and then sort them.
// Get the list of columns
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Arrange the data in descending order according to volume and in ascending order according to edition
// Use $data as the last parameter, sort by common key
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
The data collection is now sorted, and the results are as follows:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7