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 ...
随机推荐
- 变换CALayer锚点实现模拟时钟的动画
变换CALayer锚点实现模拟时钟的动画 变换锚点得需要一点理论知识,看下图就能明白:). https://developer.apple.com/library/ios/documentation/ ...
- RESTful的理解与设计【PHP】
RESTful 就是一种软件架构的风格,以资源为中心定位,运用http的请求方式(动词)来划定操作.这样的设定优点简单易理解,方便人员对接,形成规范. 资源作为唯一标识,使用相关动词取获取操作.举例, ...
- 音乐MP4网站 车辆工程 冯大昕
- August 24th 2017 Week 34th Thursday
If you have choices, choose the best. If you have no choice, do the best. 如果有选择,那就选择最好的:如果没有选择,那就努力做 ...
- Lua操作mysql
require "luasql.mysql" --创建环境对象 env = luasql.mysql() --连接数据库 conn = env:connect("数据库名 ...
- Id vs Instancetype
我写了一篇 Id vs Instancetype的文章,欢迎访问!
- 定义路由的state参数
使用$stateProvider.state('stateName', {url: '', params: {}, views: {},...})创建路由,其中部分参数解析: params: 是一个包 ...
- 在 Deepin 中搭建 GitLab
入职半个月了,一直在接受业务知识以及企业文化知识的培训,下周终于要开始上岗入手项目了.由于公司使用自己搭建的 GitLab 服务作为项目版本控制器,所以我决定学习一下 GitLab,由于这货跟 Git ...
- pushlet服务端推送——多播
版权声明:本文为博主牟云飞原创文章.未经博主同意不得转载. https://blog.csdn.net/myfmyfmyfmyf/article/details/36364337 ---------- ...
- 【[POI2014]HOT-Hotels】
魏佬怒嘲我只会做给定一棵树,输出有多少个点这种问题 不过我连这个也不会做 还算一道不错的树上数数题目 但是我一直不会数数 求树上所有的三元组\((u,v,t)\),满足\(dis(u,v)=dis(u ...