Home > Article > Backend Development > PHP implements classes and methods for sorting names according to initial letters
This article mainly introduces the classes and methods of php to sort names according to the first letter. The code is simple and easy to understand, very good, and has certain reference value. Friends who need it can refer to it
php will The names are sorted by first letter, and the specific codes are as follows:
<?php public function getFirstChar($s){ $s0 = mb_substr($s,0,3); //获取名字的姓 $s = iconv('UTF-8','gb2312', $s0); //将UTF-8转换成GB2312编码 //dump($s0); if (ord($s0)>128) { //汉字开头,汉字没有以U、V开头的 $asc=ord($s{0})*256+ord($s{1})-65536; if($asc>=-20319 and $asc<=-20284)return "A"; if($asc>=-20283 and $asc<=-19776)return "B"; if($asc>=-19775 and $asc<=-19219)return "C"; if($asc>=-19218 and $asc<=-18711)return "D"; if($asc>=-18710 and $asc<=-18527)return "E"; if($asc>=-18526 and $asc<=-18240)return "F"; if($asc>=-18239 and $asc<=-17760)return "G"; if($asc>=-17759 and $asc<=-17248)return "H"; if($asc>=-17247 and $asc<=-17418)return "I"; if($asc>=-17417 and $asc<=-16475)return "J"; if($asc>=-16474 and $asc<=-16213)return "K"; if($asc>=-16212 and $asc<=-15641)return "L"; if($asc>=-15640 and $asc<=-15166)return "M"; if($asc>=-15165 and $asc<=-14923)return "N"; if($asc>=-14922 and $asc<=-14915)return "O"; if($asc>=-14914 and $asc<=-14631)return "P"; if($asc>=-14630 and $asc<=-14150)return "Q"; if($asc>=-14149 and $asc<=-14091)return "R"; if($asc>=-14090 and $asc<=-13319)return "S"; if($asc>=-13318 and $asc<=-12839)return "T"; if($asc>=-12838 and $asc<=-12557)return "W"; if($asc>=-12556 and $asc<=-11848)return "X"; if($asc>=-11847 and $asc<=-11056)return "Y"; if($asc>=-11055 and $asc<=-10247)return "Z"; }else if(ord($s)>=48 and ord($s)<=57){ //数字开头 switch(iconv_substr($s,0,1,'utf-8')){ case 1:return "Y"; case 2:return "E"; case 3:return "S"; case 4:return "S"; case 5:return "W"; case 6:return "L"; case 7:return "Q"; case 8:return "B"; case 9:return "J"; case 0:return "L"; } }else if(ord($s)>=65 and ord($s)<=90){ //大写英文开头 return substr($s,0,1); }else if(ord($s)>=97 and ord($s)<=122){ //小写英文开头 return strtoupper(substr($s,0,1)); } else { return iconv_substr($s0,0,1,'utf-8'); //中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可 } } public function addPeople() { $userName = array('张三','马大帅','李四','王五','小二','猫蛋','狗蛋','王花','三毛','小明','李刚','张飞'); sort($userName); foreach($userName as $name){ $char = $this->getFirstChar($name); $nameArray = array(); if(count($charArray[$char])!=0){ $nameArray = $charArray[$char]; } array_push($nameArray,$name); $charArray[$char] = $nameArray; } ksort($charArray); $this->assign('_list',$charArray); }
The page displays
<foreach name="_list" item="vo" key="k"> <p>{$k}</p> <foreach name="vo" item="l"> <span class="name">{$l}</span> </foreach> </foreach>
Related recommendations:
PHP implements multi-image upload and single-image upload functions
PHP mobile phone SMS verification code implementation process Detailed explanation
The above is the detailed content of PHP implements classes and methods for sorting names according to initial letters. For more information, please follow other related articles on the PHP Chinese website!