Home  >  Article  >  Backend Development  >  PHP implements classes and methods for sorting names by first letter

PHP implements classes and methods for sorting names by first letter

PHP中文网
PHP中文网Original
2017-09-01 16:55:213473browse

thinkphp sorts names by first letter

<?php
public function getFirstChar($s){
$s0 = mb_substr($s,0,3); //获取名字的姓 
$s = iconv(&#39;UTF-8&#39;,&#39;gb2312&#39;, $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,&#39;utf-8&#39;)){ 
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,&#39;utf-8&#39;); 
//中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可 
} 
} 
public function addPeople()
{
$userName = array(&#39;张三&#39;,&#39;马大帅&#39;,&#39;李四&#39;,&#39;王五&#39;,&#39;小二&#39;,&#39;猫蛋&#39;,&#39;狗蛋&#39;,&#39;王花&#39;,&#39;三毛&#39;,&#39;小明&#39;,&#39;李刚&#39;,&#39;张飞&#39;); 
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(&#39;_list&#39;,$charArray);
}
?>

Page display

<foreach name="_list" item="vo" key="k">
<p>{$k}</p>
<foreach name="vo" item="l">
<span class="name">{$l}</span>
</foreach>
</foreach>

Rendering: PHP implements classes and methods for sorting names by first letter

The above is the detailed content of PHP implements classes and methods for sorting names by first letter. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn