[thelist] Sorting 2D array in PHP
kris burford
kris at midtempo.net
Fri Mar 18 06:06:06 CST 2005
John wrote:
>I'm finally taking the plunge and learning PHP. I'm currently trying to figure out the easiest way to sort a database-type 2D array
>
<snip>
did this last week and eventually got the code from the php site. this
worked well for me.
hth
kris
<?
// array sorting from http://uk.php.net/sort
function array_qsort (&$array, $column, $order='SORT_ASC', $first=0,
$last= -2)
{
// $array - the array to be sorted
// $column - index (column) on which to sort
// can be a string if using an associative array
// $order - SORT_ASC (default) for ascending or SORT_DESC for descending
// $first - start index (row) for partial array sort
// $last - stop index (row) for partial array sort
// $keys - array of key values for hash array sort
if (is_array($array)) {
$keys = array_keys($array);
if($last == -2) $last = count($array) - 1;
if($last > $first) {
$alpha = $first;
$omega = $last;
$key_alpha = $keys[$alpha];
$key_omega = $keys[$omega];
$guess = $array[$key_alpha][$column];
while($omega >= $alpha) {
if($order == 'SORT_ASC') {
while($array[$key_alpha][$column] < $guess) {$alpha++; $key_alpha
= $keys[$alpha]; }
while($array[$key_omega][$column] > $guess) {$omega--; $key_omega
= $keys[$omega]; }
} else {
while($array[$key_alpha][$column] > $guess) {$alpha++; $key_alpha
= $keys[$alpha]; }
while($array[$key_omega][$column] < $guess) {$omega--; $key_omega
= $keys[$omega]; }
}
if($alpha > $omega) break;
$temporary = $array[$key_alpha];
$array[$key_alpha] = $array[$key_omega]; $alpha++;
$key_alpha = $keys[$alpha];
$array[$key_omega] = $temporary; $omega--;
$key_omega = $keys[$omega];
}
array_qsort ($array, $column, $order, $first, $omega);
array_qsort ($array, $column, $order, $alpha, $last);
}
}
return $array;
}
?>
More information about the thelist
mailing list