写在最前面。很多时候我们在做一个项目的时候,都会需要按照首字母排序。例如:美团的城市选择http://www.meituan.com/index/。..在应用程序中,按字母搜索主题。在网上找了各种东西,都不尽如人意,于是自己写了一个分享给大家。$this->getInitials($item[$targetKey]),]);},$data);$data=$this->sortInitials($data);返回$数据;}/***按字母顺序排序*@paramarray$data*@returnarray*/publicfunctionsortInitials(array$data){$sortData=[];foreach($dataas$key=>$value){$sortData[$value['initials']][]=$value;}ksort($sortData);返回$sortData;}/***获取首字母*@paramstring$str汉字字符串*@returnstring首字母*/public函数getInitials($str){if(empty($str)){return'';}$fchar=ord($str{0});如果($fchar>=ord('A')&&$fchar<=ord('z')){returnstrtoupper($str{0});}$s1=iconv('UTF-8','gb2312',$str);$s2=iconv('gb2312','UTF-8',$s1);$s=$s2==$str?$s1:$str;$asc=ord($s{0})*256+ord($s{1})-65536;如果($asc>=-20319&&$asc<=-20284){返回'A';}如果($asc>=-20283&&$asc<=-19776){返回'B';}如果($asc>=-19775&&$asc<=-19219){返回'C';}如果($asc>=-19218&&$asc<=-18711){返回'D';}如果($asc>=-18710&&$asc<=-18527){返回'E';}如果($asc>=-18526&&$asc<=-18240){返回'F';}如果($asc>=-18239&&$asc<=-17923){返回'G';}如果($asc>=-17922&&$asc<=-17418){返回'H';}如果($asc>=-17417&&$asc<=-16475){返回'J';}如果($asc>=-16474&&$asc<=-16213){返回'K';}如果($asc>=-16212&&$asc<=-15641){返回'L';}如果($asc>=-15640&&$asc<=-15166){返回'M';}如果($asc>=-15165&&$asc<=-14923){返回'N';}如果($asc>=-14922&&$asc<=-14915){返回'O';}如果($asc>=-14914&&$asc<=-14631){返回'P';}如果($asc>=-14630&&$asc<=-14150){返回'Q';}如果($asc>=-14149&&$asc<=-14091){返回'R';}如果($asc>=-14090&&$asc<=-13319){返回'S';}如果($asc>=-13318&&$asc<=-12839){返回'T';}如果($asc>=-12838&&$asc<=-12557){返回'W';}如果($asc>=-12556&&$asc<=-11848){返回'X';}如果($asc>=-11847&&$asc<=-11056){返回'Y';}如果($asc>=-11055&&$asc<=-10247){返回'Z';}返回空值;}}直接导入到项目中即可。如果需要命名空间,可以自己添加。让我们看看下面如何使用它。//按首字母排序$data=[['id'=>1,'area_name'=>'山东'],['id'=>2,'area_name'=>'江苏'],['id'=>3,'area_name'=>'安徽'],['id'=>4,'area_name'=>'福建'],['id'=>5,'area_name'=>'江西'],['id'=>6,'地区名称'=>'广东'],['id'=>7,'地区名称'=>'广西'],['id'=>8,'地区名称'=>'海南'],['id'=>9,'地区名称'=>'河南'],['id'=>10,'地区名称'=>'湖南'],['id'=>11,'地区名称'=>'湖北'],];//初始化,然后调用分组方法$data=(newCharacter)->groupByInitials($data,'area_name');下面的结果是不是你想要的,无论是app还是网页,你都可以使用$data=array('A'=>array(0=>array('id'=>3,'area_name'=>'Anhui','initials'=>'A')),'F'=>array(0=>array('id'=>4,'area_name'=>'福建','initials'=>'F')),'G'=>数组(0=>数组('id'=>6,'area_name'=>'name','initials'=>'G'),1=>array('id'=>7,'area_name'=>'name','initials';=>'G')),'H'=>array(0=>array('id'=>8,'area_name'=>'label','initials'=>'H'),1=>array('id'=>9,'area_name'=>'label','initials'=>'H'),2=>array('id'=>10,'area_name'=>'label','首字母'=>'H'),3=>array('id'=>11,'area_name'=>'Name','initials'=>'H')),'J'=>array(0=>array('id'=>2,'area_name'=>'description','initials'=>'J'),1=>array('id'=>5,'area_name'=>'江西','initials'=>'J')),'S'=>array(0=>array('id'=>1,'area_name'=>'山东','initials'=>'S')));原文http://www.tech1024.cn/origin...
