利用服务器端编程语言(专业超文本预处理器的缩写)获取汉字首字母并且分组排序详解
前言
本文主要给大家介绍了关于服务器端编程语言(专业超文本预处理器的缩写)获取汉字首字母并分组排序的相关内容,因经常我们在做项目的时候,会有按首字母排序的需求比如:美团的城市选择http://www.meituan.com/index/changecity/initiative应用中按字母搜索
正题
网上找了各种,不尽人意,于是,自己就写了一个,分享给大家。
?PHP/* * * @作者技术*/类字符{ /** *二维数组根据首字母分组排序* @param数组$数据二维数组* @param字符串$targetKey首字母的键名* @返回数组根据首字母关联的二维数组*/public function group by首字母(array $ data,$ target key=' name '){ $ data=array _ map(function($ item)use($ target key){ return array _ merge($ item,['首字母'=$ this-getInitials($ item[$ target key]),]);},$ data);$ data=$ this-sortsinialias($ data);返回$数据;} /** * 按字母排序* @ param array $ data * @ return array */public函数对首字母进行排序(array $ data){ $ sort data=[];foreach($ data as $ key=$ value){ $ sort data[$ value['首字母]][]=$ value;} k sort($ sort data);返回$ sortData} /** *获取首字母* @param string $str汉字字符串* @返回字符串首字母*/public函数GetInitials($ str){ if(empty($ str)){ return " ";} $ fchar=order($ str { 0 });if($ fchar=order(' A ')$ fchar=order(' z '){ return strtopol($ str { 0 });} $s1=iconv('UTF-8 ',' gb2312 ',$ str);$s2=iconv('gb2312 ',' UTF-8 ',$ S1);$s=$s2==$str?$ s1 : $ str$asc=订单($s{0}) * 256订单($ s { 1 })-65536;if($ ASC=-20319 $ ASC=-20284){ return ' A ';} if($ ASC=-20283 $ ASC=-19776){ return ' B ';} if($ ASC=-19775 $ ASC=-19219){ return ' C ';} if($ ASC=-19218 $ ASC=-18711){ return ' D ';} if($ ASC=-18710 $ ASC=-18527){ return ' E ';} if($ ASC=-18526 $ ASC=-18240){ return ' F ';} if($ ASC=-18239 $ ASC=-17923){ return ' G ';} if($ ASC=-17922 $ ASC=-17418){ return ' H ';} if($ ASC=-17417 $ ASC=-16475){ return ' J ';} if($ ASC=-16474 $ ASC=-16213){ return ' K ';} if($ ASC=-16212 $ ASC=-15641){ return ' L ';} if($ ASC=-15640 $ ASC=-15166){ return ' M ';} if($ ASC=-15165 $ ASC=-14923){ return ' N ';} if($ ASC=-14922 $ ASC=-14915){ return ' O ';} if($ ASC=-14914 $ ASC=-14631){ return ' P ';} if($ ASC=-14630 $ ASC=-14150){ return ' Q ';} if($ ASC=-14149 $ ASC=-14091){ return ' R ';} if($ ASC=-14090 $ ASC=-13319){ return ' S ';} if($ ASC=-13318 $ ASC=-12839){ return ' T ';} if($ ASC=-12838 $ ASC=-12557){ return ' W ';} if($ ASC=-12556 $ ASC=-11848){ return ' X ';} if($ ASC=-11847 $ ASC=-11056){ return ' Y ';} if($ ASC=-11055 $ ASC=-10247){ return ' Z ';}返回null}}项目中直接引入即可,如果需要命名空间,可以自行添加,下面是我们看看怎么用。
//按首字母排序$data=[ ['id'=1,' area_name'='山东],['id'=2,' area_name'='江苏],['id'=3,' area_name'='安徽],['id'=4,' area_name'='福建],['id'=5,' area_name'='江西],['id'=6,' area_name'='广东],['id'=7,' area_name'='广西],['id'=8,' area_name'='海南],['id'=9,' area_name'='河南],['id'=10,' area_name'='湖南],['id'=11,' area_name'='湖北'],];//初始化,然后调用分组方法$data=(新字符)-分组依据声母($data,' area _ name ');下面的结果是不是你想要的呢,不论是做应用还是网页,都可以用
$ data=array(' A '=array(0=array(' id '=3,' area_name'='安徽,'首字母='A '),' F'=数组(0=数组(' id'=4,' area_name'='福建,'首字母='F '),' G'=array(0=array('id'=6,' area_name'='广东,'首字母='G '),1=数组(' id'=7,' area_name'='广西、'首字母='G '),' H'=数组(0=数组(' id'=8, area_name'='海南,'首字母='H '),1=数组(' id'=9,' area_name'='河南,'首字母='H '),2=数组(' id'=10,' area_name'='湖南,'首字母='H '),3=数组(' id'=11,' area_name'='湖北,'首字母='H ',' J'=array(0=array('id'=2,' area_name'='江苏,'首字母='J '),1=数组(' id'=5,' area_name'='江西、'首字母='J '),' S'=array(0=array('id'=1,' area_name'='山东,'首字母=' S '); 总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
版权声明:利用服务器端编程语言(专业超文本预处理器的缩写)获取汉字首字母并且分组排序详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。