php实现姓名按首字母排序的类与方法

php将名字按首字母进行排序

<?php

publicfunctiongetFirstChar($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>=-20319and$asc<=-20284)return"A";

if($asc>=-20283and$asc<=-19776)return"B";

if($asc>=-19775and$asc<=-19219)return"C";

if($asc>=-19218and$asc<=-18711)return"D";

if($asc>=-18710and$asc<=-18527)return"E";

if($asc>=-18526and$asc<=-18240)return"F";

if($asc>=-18239and$asc<=-17760)return"G";

if($asc>=-17759and$asc<=-17248)return"H";

if($asc>=-17247and$asc<=-17418)return"I";

if($asc>=-17417and$asc<=-16475)return"J";

if($asc>=-16474and$asc<=-16213)return"K";

if($asc>=-16212and$asc<=-15641)return"L";

if($asc>=-15640and$asc<=-15166)return"M";

if($asc>=-15165and$asc<=-14923)return"N";

if($asc>=-14922and$asc<=-14915)return"O";

if($asc>=-14914and$asc<=-14631)return"P";

if($asc>=-14630and$asc<=-14150)return"Q";

if($asc>=-14149and$asc<=-14091)return"R";

if($asc>=-14090and$asc<=-13319)return"S";

if($asc>=-13318and$asc<=-12839)return"T";

if($asc>=-12838and$asc<=-12557)return"W";

if($asc>=-12556and$asc<=-11848)return"X";

if($asc>=-11847and$asc<=-11056)return"Y";

if($asc>=-11055and$asc<=-10247)return"Z";

}elseif(ord($s)>=48andord($s)<=57){//数字开头

switch(iconv_substr($s,0,1,'utf-8')){

case1:return"Y";

case2:return"E";

case3:return"S";

case4:return"S";

case5:return"W";

case6:return"L";

case7:return"Q";

case8:return"B";

case9:return"J";

case0:return"L";

}

}elseif(ord($s)>=65andord($s)<=90){//大写英文开头

returnsubstr($s,0,1);

}elseif(ord($s)>=97andord($s)<=122){//小写英文开头

returnstrtoupper(substr($s,0,1));

}

else

{

returniconv_substr($s0,0,1,'utf-8');

//中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可

}

}

publicfunctionaddPeople()

{

$userName=array('张三','马大帅','李四','王五','小二','猫蛋','狗蛋','王花','三毛','小明','李刚','张飞');

sort($userName);

foreach($userNameas$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);

}

页面显示

<foreachname="_list"item="vo"key="k">

<p>{$k}</p>

<foreachname="vo"item="l">

<spanclass="name">{$l}</span>

</foreach>

</foreach>