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>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios3怎么取消长按弹出菜单_苹果:iOS13取消3D-Touch重压改为长按只是个BUG~

原标题&#xff1a;苹果&#xff1a;iOS13取消3D-Touch重压改为长按只是个BUG~目前iOS 13中3D-Touch功能在桌面级菜单采用的是类似iPhone XR的触觉感应(Haptic touch)&#xff0c;用户只需要长按App图标即可呼出菜单&#xff0c;继续长按则会出现删除应用的抖动界面。不同于以往…

设△ABC的内角A,B,C,所对的边分别为a,b,c,且acosB-bcosA=3/5c,则tan(A-B)的最大值为

设△ABC的内角A,B,C,所对的边分别为a,b,c,且acosB-bcosA3/5c,则tan(A-B)的最大值为 转载于:https://www.cnblogs.com/Mary-Sue/p/9048289.html

BGP笔记1

1、BGP属于EGP&#xff0c;是高级DV协议&#xff0c;也被称为路径矢量协议&#xff0c;基于TCP 179端口。 2、现在使用版本BGP-4。 3、第一次做完整更新&#xff0c;以后就只增量更新 4、Autonomous Systems&#xff1a;运行同一种选路策略&#xff0c;由统一管理者管理。 1&am…

java 打包下载文件_java下载打包下载文件

一&#xff1a;对于文件的一些操作1.创建文件夹private String CreateFile(String dir) {File file new File(dir);if (!file.exists()) {//创建文件夹boolean mkdir file.mkdir();} else {}return dir;}2.复制文件private void copyFile(File source, File dest) throws IOE…

也说读书

记得当年毕业前夕&#xff0c;一位教授说&#xff1a;“希望你们毕业后&#xff0c;能坚持每年读10本书。”当时不以为然&#xff0c;区区十本&#xff0c;岂非小菜&#xff01;毕业后&#xff0c;迫于生计&#xff0c;东奔西走&#xff0c;很难静心读书&#xff0c;偶尔拿起书…

C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】

这个在做winform程序的空间编程的时候遇到过太多次了&#xff0c;自己也想留下点经验&#xff0c;搜索了一下&#xff0c;这篇文章很好很强大了&#xff0c;感谢博主“驴子的菜园”。 程序界面如上 各部分简要说明&#xff1a; 整个窗体上覆盖一个splitcontainer。 splitcontai…

修改java启动参数_如何修改jvm启动参数

用java命令查看。用java -option进行修改参数。还有tomcat&#xff0c;eclipse启动时通过配置文件加载的。详细如下&#xff1a;安装Java开发软件时&#xff0c;默认安装包含两个文件夹&#xff0c;一个JDK(Java开发工具箱)&#xff0c;一个JRE(Java运行环境&#xff0c;内含JV…

非常完善的Log4net详细说明(转)

最可能来源&#xff1a;https://blog.csdn.net/ydm19891101/article/details/50561638 其它转载者&#xff1a;http://www.cnblogs.com/zhangchenliang/p/4546352.html 1、概述 log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分…

话说招聘面试

最近公司有一个新项目&#xff0c;是一个软件和硬件结合的项目&#xff0c;具体的就是一个cs软件通过485通信操作硬件的基站&#xff0c;基站上面挂着传感器和其他设备&#xff0c; 当然我只负责软件也就是上位机部分。通过1个月多的时间&#xff0c;每天开会开会调研调研&…

mysql内链接与交叉连接_SQLServer 2008中的交叉连接与内部连接

这里是交叉连接和内部连接的最佳示例。考虑下表表&#xff1a;Teacherx------------------------x| TchrId | TeacherName |x----------|-------------x| T1 | Mary || T2 | Jim |x------------------------x表&#xff1a;Studentx-------------…

获得数据库中表字段的名字.txt

获得数据库中所有数据库的名字&#xff1a;select name From sysdatabases 获得某个数据库中所有表的名字&#xff1a;select name from sysobjects where typeU获得某个表中字段的名字&#xff1a;select name from syscolumns where idobject_id(表名)use masterif exists(S…

java pause_java – 更有效的暂停循环方式

可用的工具是&#xff1a;等待/通知 – 我们都试图摆脱这个古老的系统.信号量 – 一旦你的线程抓住它,你持有它直到释放,所以再次抓住它不会阻止.这意味着您无法在自己的线程中暂停.CyclicBarrier – 每次使用时都必须重新创建.ReadWriteLock – 我的最爱.您可以让任意多个线程…

jmeter java接口_JMeter接口Java开发五步曲

想做jmeter接口二次开发但不知道如何入手&#xff0c;要解决这个问题&#xff0c;我们可以分为5个步骤第一步&#xff1a;了解jmeter处理java请求的流程第二步&#xff1a;通过实现jmeter中的接口JavaSamplerClient编写自定义JAVA接口第三步&#xff1a;打包第四步&#xff1a;…

循环

# l []# for x in range(3,10):# #pass# l.append(x)# print(x,:,l)# print(l)#break/continue(break:终止。continue:继续)#list [1,2,3,4] #遍历# for x in list:# if x 3:# print(x,#*20)# break #终止当前循环# else:# pr…

Redhat ssh服务登录慢

redhat在安装以后每次通过ssh服务登录&#xff0c;要等待几秒才能进入。 只要在sshd_config修改一下以下值就好 vim /etc/ssh/sshd_config UseDNS no service sshd restart 再次用ssh终端登录就快了转载于:https://www.cnblogs.com/passedbylove/p/9070405.html

console程序也有版本和图标

控制台程序的版本和图标创建和编辑 最近项目要做一个能够支持批处理的文件转换工具&#xff0c;根据应用环境的需要&#xff0c;用VC6做了一个基于Console的程序&#xff0c;等程序做完了&#xff0c;突然发现需要给这个程序指定版本&#xff0c;一时还真有些迷糊。从来做控制台…

java面向对象语言_Java到底是不是一种纯面向对象语言?

英文原文&#xff1a;Why Java Is a Purely Object-Oriented Language Or Why NotJava是否确实是 “纯面向对象”&#xff1f;让我们深入到Java的世界&#xff0c;试图来证实它。在我刚开始学习Java的前面几年&#xff0c;我从书本里知道了Java是遵循“面向对象编程范式(Object…

Python--DBUtil

Python--DBUtil包 1 简介 DBUtils是一套Python数据库连接池包&#xff0c;并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。 DBUtils提供两种外部接口&#xff1a; PersistentDB &#xff1a;提供线程专用的数据库连接&#xff0c;并自动管理…

java calendar计时器_Java Calendar setTimeInMillis()用法及代码示例

Calendar类中的setTimeInMillis(long mill_sec)方法用于根据传递的long值设置由此Calendar表示的Calendars时间。用法:public void setTimeInMillis(long mill_sec)参数&#xff1a;该方法采用long类型的一个参数mill_sec&#xff0c;表示要设置的给定日期。返回值&#xff1a;…

找出两个字符串数组中的相同元素

public static List<String> getAllSameElement1(String[] strArr1,String[] strArr2) { if(strArr1 null || strArr2 null) { return null; } List<String> strList1 new ArrayList<String>(Arrays.asList(strArr1)); //----------代码段1 List<…