php实现姓名按首字母排序的类与方法
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
>
php实现姓名按首字母排序的类与方法的更多相关文章
- 联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。
package com.lixu.letterlistview; import java.util.ArrayList; import java.util.List; import org.apa ...
- Oracle 10g如何对用户姓名,按首字母排序、查询
首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICA ...
- [转]Oracle 10g如何对用户姓名,按首字母排序、查询
首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICA ...
- 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。
package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...
- php按照中文首字母排序
1> 网络上很多php的工具类可以将汉字转为拼音: 2> 将拼音进行排序即可 另一种则是类似mysql转码方式: 1 foreach ($array as $key=>$value) ...
- HashMap加入数据后,会自动根据首字母排序
1.Map<String, ArrayList<XX>> entityHashMap = new HashMap<>(); 然后增加一些数据,会发现根据String ...
- mysql中文名字按首字母排序
在mysql数据库中可以使用GBK编码对中文进行排序,如名字按首字母排序 order by convert(substr(tu.username,1,1) using 'GBK') 其中substr方 ...
- mysql排序的中文首字母排序和自定义排序
select * FROM organ_new where city_code = 'SZ0755' and organ_type = 'H' and state = '1' ORDER BY FIE ...
- mysql、oracle 中按照拼音首字母排序
mysql中按照拼音首字母排序 convert(name using gbk) ASC 注:name 为字段名称 oracle中按照拼音首字母排序 nlssort(enterprise_name,'N ...
随机推荐
- django项目配置
创建工程 本项目使用git管理项目代码,代码库放在gitee码云平台.(注意,公司中通常放在gitlab私有服务器中) 1. 在git平台创建工程 1) 创建私有项目库 2)克隆项目到本地 3)创建并 ...
- 《SQL必知必会》知识点汇总
select CustomerNo from dbo.Customers; 通配符的使用 select *from dbo.Customers; select CustomerNo from dbo. ...
- Nginx性能问题答疑
为什么Nginx的总体性能比Apache高? Nginx使用的是epoll模型和kqueue的网络I/O模型Apache使用的是传统的select模型.目前linux的高并发场景使用的都是epoll模 ...
- 3 Dockerfile指令详解-FROM&MAINTAINER&RUN
1.FROM指令 FROM centos #指定centos为基础镜像 2.MAINTAINER 指令 MAINTAINER @QQ.COM #指定维护人等信息,方便维护 3.RUN 命令 #新建 ...
- 深入浅出SharePoint——常用的url命令
?&displaymode=design 页面可编辑
- August 11th 2017 Week 32nd Friday
I can't give you the world, but I can give you my world. 我不能给你全世界,但是我的世界我可以全部给你. Maybe I can't give ...
- JavaScript设计模式导学
如何成为一名合格的工程师? 作为一名合格的工程师,不仅需要懂代码,还要懂设计,一名合格工程师的必备条件: 前端开发有一定的设计能力,一般三年开发经验的同学,面试必须考设计能力 成为项目技术负责人,设计 ...
- RedisClient的安装及基本使用
管理redis的可视化客户端目前较流行的有三个:Redis Client ; Redis Desktop Manager ; Redis Studio. 这里目前给大家介绍Redis Client 的 ...
- Inno Setup新建项目
一.准备一个例子工程WEI 运行起来是这样的 二.开始新建 使用Inno Setup Compiler或Inno Script Studio新建都可以,我这里先用Inno Setup Compiler ...
- programming-languages学习笔记--第6部分
programming-languages学习笔记–第6部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} program ...