拼音排序的規則:
字串包括特殊字元、數字、英文字元、中文字元等等,排序結果要求,特殊字元排在第一梯隊,將其按照首個字元ascii碼錶進行排序,數字字元排在第二梯隊,將首個字元數字按照數字大小排序,英文字元排在第三梯隊,按照首字母字母表順序排序,中文字元排在第三梯隊,將按照拼音的首字母排序 。(此處不考慮其他語言的字元)。
資料庫查詢排序:
查詢資料庫的時候可以將某個欄位按照中文排序。如下,將查詢結果以name欄位排序
SELECT name FROM crm.b_user where name!='' order by convert(name using gbk) asc;
PHP函式中排序:
$array=["中國","大家","寶馬",'aaa','電腦','工作','276','##','還是','php','加班','shangxian','hello','345','$name1_utf8'];
1 usort($array,'mySortArray'); 2 foreach($array as $k=>$v){ 3 echo $v; 4 echo "<br/>"; 5 } 6 function mySortArray($name0,$name1){ 7 $array=[$name0,$name1]; 8 foreach ($array as $key=>$value) 9 { 10 $new_array[$key] = iconv('UTF-8', 'GBK', $value); 11 } 12 asort($new_array); 13 $array=[]; 14 foreach ($new_array as $key=>$value) 15 { 16 $array[]= iconv('GBK', 'UTF-8', $value); 17 } 18 if($array[0]===$name1){ 19 return true; 20 }else{ 21 return false; 22 } 23 }
排序結果:
## $name1_utf8 276 345 aaa hello php shangxian 寶馬 大家 電腦 工作 還是 加班 中國
PHP的類中排序:
框架中通常是一個類,下面是在Yii的控制器類中對返回給客戶端的陣列按照中文排序。
控制器中排序程式碼如下:
1 public function actionJimmy(){ 2 $arr=[ 3 [ 4 'id'=>0, 5 'name'=>'hello' 6 ], 7 [ 8 'id'=>0, 9 'name'=>'aaa' 10 ], 11 [ 12 'id'=>0, 13 'name'=>'你好' 14 ], 15 [ 16 'id'=>0, 17 'name'=>'電腦' 18 ], 19 [ 20 'id'=>0, 21 'name'=>'法第三方' 22 ], 23 [ 24 'id'=>0, 25 'name'=>'啊啊' 26 ], 27 [ 28 'id'=>0, 29 'name'=>'mm' 30 ], 31 [ 32 'id'=>0, 33 'name'=>'來了' 34 ], [ 35 'id'=>0, 36 'name'=>'安撫' 37 ], 38 [ 39 'id'=>0, 40 'name'=>'偶發' 41 ], 42 [ 43 'id'=>0, 44 'name'=>'愛妃' 45 ], 46 [ 47 'id'=>0, 48 'name'=>'群發' 49 ], 50 [ 51 'id'=>0, 52 'name'=>'字元' 53 ], 54 [ 55 'id'=>0, 56 'name'=>'首個' 57 ], 58 [ 59 'id'=>0, 60 'name'=>'記錄' 61 ], 62 ]; 63 usort($arr,[$this,'mySortArray']); 64 65 $this->jsonReturn(0, '排序成功', $arr); 66 } 67 /** 68 * 中文字元排序 69 * create by jimmy 70 * 2016/1/8 71 * @param $friendA比較函式的第一個 72 * @param $friendB比較函式的第二個 73 * @return bool返回排序結果 74 */ 75 public function mySortArray($friendA, $friendB){ 76 $name0=$friendA['name']; 77 $name1=$friendB['name']; 78 $array=[$name0,$name1]; 79 foreach ($array as $key=>$value) 80 { 81 $new_array[$key] = iconv('UTF-8', 'GBK', $value); 82 } 83 asort($new_array); 84 $array=[]; 85 foreach ($new_array as $key=>$value) 86 { 87 $array[]= iconv('GBK', 'UTF-8', $value); 88 } 89 if($array[0]===$name1){ 90 return true; 91 }else{ 92 return false; 93 } 94 }
請求介面返回的json內容為排序後的結果:
1 { 2 "code":0, 3 "msg":"排序成功", 4 "data":[ 5 { 6 "id":0, 7 "name":"aaa" 8 }, 9 { 10 "id":0, 11 "name":"hello" 12 }, 13 { 14 "id":0, 15 "name":"mm" 16 }, 17 { 18 "id":0, 19 "name":"啊啊" 20 }, 21 { 22 "id":0, 23 "name":"愛妃" 24 }, 25 { 26 "id":0, 27 "name":"安撫" 28 }, 29 { 30 "id":0, 31 "name":"電腦" 32 }, 33 { 34 "id":0, 35 "name":"法第三方" 36 }, 37 { 38 "id":0, 39 "name":"記錄" 40 }, 41 { 42 "id":0, 43 "name":"來了" 44 }, 45 { 46 "id":0, 47 "name":"你好" 48 }, 49 { 50 "id":0, 51 "name":"偶發" 52 }, 53 { 54 "id":0, 55 "name":"群發" 56 }, 57 { 58 "id":0, 59 "name":"首個" 60 }, 61 { 62 "id":0, 63 "name":"字元" 64 } 65 ] 66 }