<?php
function quick_sort($array,$bykey=1,$descorasc=1){ if (count($array) <= 1) return $array; $key = $array[0][$bykey]; $key_arr=$array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i<count($array); $i++){ if ($descorasc==1){//按降序排 if ($array[$i][$bykey] <= $key) { $left_arr[] = $array[$i]; } else { $right_arr[] = $array[$i]; } }else {//按升序排 if ($array[$i][$bykey] >$key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } } $left_arr = quick_sort($left_arr,$bykey,$descorasc); $right_arr = quick_sort($right_arr,$bykey,$descorasc);
return array_merge($left_arr,array($key_arr), $right_arr); //return array_merge($left_arr, array($key), $right_arr); } $arr=array(array('a'=>'8','b'=>12),array('a'=>'a','b'=>24),array('a'=>'a','b'=>7),array('a'=>'a','b'=>97),array('a'=>'a','b'=>9),array('a'=>'a','b'=>5)); $arr=quick_sort($arr,'b'); echo '<hr>'; var_dump($arr); $arr=quick_sort($arr,'b',0); echo '<hr>'; var_dump($arr);
?>