php 字符串 字母排序,PHP 字符串数组按照拼音排序的问题

标签:

拼音排序的规则:

字符串包括特殊字符、数字、英文字符、中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英文字符排在第三梯队,按照首字母字母表顺序排序,中文字符排在第三梯队,将按照拼音的首字母排序 。(此处不考虑其他语言的字符)。

数据库查询排序:

查询数据库的时候可以将某个字段按照中文排序。如下,将查询结果以name字段排序

SELECT name FROM crm.b_user where name!=‘‘ order by convert(name using gbk) asc;

20180110173819767820.png

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_utf8

276

345aaa

hello

php

shangxian

宝马

大家

电脑

工作

还是

加班

中国

PHP的类中排序:

框架中通常是一个类,下面是在Yii的控制器类中对返回给客户端的数组按照中文排序。

控制器中排序代码如下:

335b83df261c422459d4afc29ba290e5.png

d1b641f023dd079c9e4a800b96607d9d.gif

1 public functionactionJimmy(){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内容为排序后的结果:

335b83df261c422459d4afc29ba290e5.png

d1b641f023dd079c9e4a800b96607d9d.gif

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

标签:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值