博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现姓名按首字母排序的类与方法
阅读量:4309 次
发布时间:2019-06-06

本文共 2718 字,大约阅读时间需要 9 分钟。

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

<?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
);
}
 
页面显示

<foreach name="_list" item="vo" key="k">

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

转载于:https://www.cnblogs.com/mverting/p/9044624.html

你可能感兴趣的文章
String的Intern方法
查看>>
KRPANO资源分析工具下载720YUN全景图
查看>>
一些程序和工具
查看>>
java8 运算语法集
查看>>
IDEA关于重命名
查看>>
Es6 中let var和 const 了解
查看>>
巧用队列之”Voting“
查看>>
Oracle数据类型number(m,n)
查看>>
ACC 001 C - Shorten Diameter 图论
查看>>
开通博客了...
查看>>
[转]复制虚拟机后linux中的eth0变成eth1问题
查看>>
TableViewCell中自定义XIB的使用
查看>>
ubuntu 显示隐藏文件
查看>>
Linux 定时任务crontab
查看>>
mongoose联表查询与一般查询合并
查看>>
jQuery--内容过滤和可见性过滤
查看>>
Android手机总是提示:存储空间不足,解决方法
查看>>
MySQL 函数之求取一个表中的某个字段的中位数
查看>>
EntityFramework 更新数据库字段的三种方法
查看>>
hdu 1253 胜利大逃亡
查看>>