博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 字符串数组按照拼音排序的问题
阅读量:6475 次
发布时间:2019-06-23

本文共 4623 字,大约阅读时间需要 15 分钟。

拼音排序的规则:

字符串包括特殊字符、数字、英文字符、中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符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 "
"; 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_utf8276345aaahellophpshangxian宝马大家电脑工作还是加班中国

 

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 jimmy70      * 2016/1/871      * @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     }
View Code

请求接口返回的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 }
View Code

 

转载于:https://www.cnblogs.com/JimmyBright/p/5116416.html

你可能感兴趣的文章
rsync常见问题及解决办法
查看>>
MySQL日期 专题
查看>>
C#中禁止程序多开
查看>>
分布式缓存Redis使用以及原理
查看>>
Activity竟然有两个onCreate方法,可别用错了
查看>>
Linux经常使用命令(十六) - whereis
查看>>
插件编译 版本问题
查看>>
android中TextView的阴影设置
查看>>
core dump相关
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
iOS快速清除全部的消息推送
查看>>
java单例模式深度解析
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>