关于二维数组对某个字段进行升序和降序排序类

来源:互联网 发布:智通医疗软件. 编辑:程序博客网 时间:2024/06/05 18:44
  1. <?php  
  2. /** 
  3.  * @author paul <199921128@qq.com> 
  4.  * @desc 对二维数组的某一个字段进行升降排序 
  5.  * @data 
  6.  *      $testData = array( 
  7.             array('newPrice'=>9), 
  8.             array('newPrice'=>21), 
  9.             array('newPrice'=>15), 
  10.             array('newPrice'=>13), 
  11.             array('newPrice'=>12) 
  12.         ); 
  13.  */  
  14. class sortClass{  
  15.     //升序  
  16.     function sortArrayAsc($preData,$sortType='newPrice'){  
  17.         $sortData = array();  
  18.         foreach ($preData as $key_i => $value_i){  
  19.             $price_i = $value_i[$sortType];  
  20.             $min_key = '';  
  21.             $sort_total = count($sortData);  
  22.             foreach ($sortData as $key_j => $value_j){  
  23.                 if($price_i<$value_j[$sortType]){  
  24.                     $min_key = $key_j+1;  
  25.                     break;  
  26.                 }  
  27.             }  
  28.             if(emptyempty($min_key)){  
  29.                 array_push($sortData$value_i);   
  30.             }else {  
  31.                 $sortData1 = array_slice($sortData, 0,$min_key-1);   
  32.                 array_push($sortData1$value_i);  
  33.                 if(($min_key-1)<$sort_total){  
  34.                     $sortData2 = array_slice($sortData$min_key-1);   
  35.                     foreach ($sortData2 as $value){  
  36.                         array_push($sortData1$value);  
  37.                     }  
  38.                 }  
  39.                 $sortData = $sortData1;  
  40.             }  
  41.         }  
  42.         return $sortData;  
  43.     }  
  44.     //降序  
  45.     function sortArrayDesc($preData,$sortType='newPrice'){  
  46.         $sortData = array();  
  47.         foreach ($preData as $key_i => $value_i){  
  48.             $price_i = $value_i[$sortType];  
  49.             $min_key = '';  
  50.             $sort_total = count($sortData);  
  51.             foreach ($sortData as $key_j => $value_j){  
  52.                 if($price_i>$value_j[$sortType]){  
  53.                     $min_key = $key_j+1;  
  54.                     break;  
  55.                 }  
  56.             }  
  57.             if(emptyempty($min_key)){  
  58.                 array_push($sortData$value_i);   
  59.             }else {  
  60.                 $sortData1 = array_slice($sortData, 0,$min_key-1);   
  61.                 array_push($sortData1$value_i);  
  62.                 if(($min_key-1)<$sort_total){  
  63.                     $sortData2 = array_slice($sortData$min_key-1);   
  64.                     foreach ($sortData2 as $value){  
  65.                         array_push($sortData1$value);  
  66.                     }  
  67.                 }  
  68.                 $sortData = $sortData1;  
  69.             }  
  70.         }  
  71.         return $sortData;  
  72.     }  
  73. }  
  74. ?>