1. 程式人生 > >PHP二維陣列的快速排序

PHP二維陣列的快速排序

/**
 * 二維陣列的快速排序(推薦)
 * @param Array $data 二維陣列
 * @param string $field 所要排序的欄位
 * @param string $order 正序或倒序
 * @param boolean $isabs 是否比較絕對值
 */
function quickSort($data,$field,$order="asc",$isabs=false) {
   $len=count($data);
   if($len <= 1){
      return $data;
   }
   $item = $data[0][$field];
   $left 
= array(); $right = array(); $abs=$isabs==false?"":"abs"; switch($order){ case 'desc'://倒敘 for($i = 1;$i < $len; $i++){ if(self::isabs($data[$i][$field],$isabs) > self::isabs($item,$isabs)){ $left[] =$data[$i]; }else{ $right
[]=$data[$i]; } } break; case 'asc': for($i = 1;$i < $len; $i++){ if(self::isabs($data[$i][$field],$isabs) < self::isabs($item,$isabs)){ $left[] =$data[$i]; }else{ $right[]=$data[$i]; } } break
; default: break; } $left = self::quickSort($left,$field,$order); $right = self::quickSort($right,$field,$order); $result = array_merge($left,array($data[0]),$right); return $result; }