自訂快速排序函式 qsort,支援依指定比較函式對關聯陣列排序。
<?php
function qsort($a, $f) {
qsort_do($a, 0, count($a) - 1, $f);
}
function qsort_do(&$a, $l, $r, $f) {
if ($l < $r) {
qsort_partition($a, $l, $r, $lp, $rp, $f);
qsort_do($a, $l, $lp, $f);
qsort_do($a, $rp, $r, $f);
}
}
function qsort_partition(&$a, $l, $r, &$lp, &$rp, $f) {
$i = $l + 1;
$j = $l + 1;
while ($j <= $r) {
if ($f($a[$j], $a[$l])) {
$tmp = $a[$j];
$a[$j] = $a[$i];
$a[$i] = $tmp;
$i++;
}
$j++;
}
$x = $a[$l];
$a[$l] = $a[$i - 1];
$a[$i - 1] = $x;
$lp = $i - 2;
$rp = $i;
}
?>
使用方式:qsort($array, function($x, $y) { return $x['key'] < $y['key']; });