1 /**
2 * 取汉字的第一个字的首字母
3 * @param type $str
4 * @return string|null
5 */
6 function _getFirstCharter($str){
7 if(empty($str)){return '';}
8 $fchar=ord($str{0});
9 if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});
10 $s1=iconv('UTF-8','gb2312',$str);
11 $s2=iconv('gb2312','UTF-8',$s1);
12 $s=$s2==$str?$s1:$str;
13 $asc=ord($s{0})*256+ord($s{1})-65536;
14 if($asc>=-20319&&$asc<=-20284) return 'A';
15 if($asc>=-20283&&$asc<=-19776) return 'B';
16 if($asc>=-19775&&$asc<=-19219) return 'C';
17 if($asc>=-19218&&$asc<=-18711) return 'D';
18 if($asc>=-18710&&$asc<=-18527) return 'E';
19 if($asc>=-18526&&$asc<=-18240) return 'F';
20 if($asc>=-18239&&$asc<=-17923) return 'G';
21 if($asc>=-17922&&$asc<=-17418) return 'H';
22 if($asc>=-17417&&$asc<=-16475) return 'J';
23 if($asc>=-16474&&$asc<=-16213) return 'K';
24 if($asc>=-16212&&$asc<=-15641) return 'L';
25 if($asc>=-15640&&$asc<=-15166) return 'M';
26 if($asc>=-15165&&$asc<=-14923) return 'N';
27 if($asc>=-14922&&$asc<=-14915) return 'O';
28 if($asc>=-14914&&$asc<=-14631) return 'P';
29 if($asc>=-14630&&$asc<=-14150) return 'Q';
30 if($asc>=-14149&&$asc<=-14091) return 'R';
31 if($asc>=-14090&&$asc<=-13319) return 'S';
32 if($asc>=-13318&&$asc<=-12839) return 'T';
33 if($asc>=-12838&&$asc<=-12557) return 'W';
34 if($asc>=-12556&&$asc<=-11848) return 'X';
35 if($asc>=-11847&&$asc<=-11056) return 'Y';
36 if($asc>=-11055&&$asc<=-10247) return 'Z';
37 return null;
38 }
39
40 $arr = [
41 ['name'=>'黄大','age'=>12],
42 ['name'=>'党委','age'=>12],
43 ['name'=>'金鳞','age'=>12],
44 ['name'=>'激光','age'=>12],
45 ['name'=>'天台','age'=>12],
46 ['name'=>'浙江','age'=>12],
47 ['name'=>'test','age'=>12],
48 ['name'=>'123','age'=>12]
49
50 ];
51 $new = [];
52 foreach($arr as $k=>$val){
53 $first = _getFirstCharter($val['name']);
54 $new[$first.$k] = $val;
55 }
56 ksort($new);
57 print_r($new);

php 对二维数组按照汉字首字母排序的更多相关文章

  1. Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印

    1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...

  2. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

  3. php 将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序

    最近再写项目的时候,碰到一个问题:如何将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序:实在是想不到哪个php库中有哪个函数能实现,只能自己写一个了,将代码写出来后,发现自己的代码繁琐,并 ...

  4. PHP二维数组如何根据某个字段排序

    分享下PHP二维数组如何根据某个字段排序的方法. 从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条. 本文记录的要实现的功能类似于 ...

  5. PHP中根据二维数组中某个字段实现排序

    想要实现二维数组中根据某个字段排序,一般可以通过数组循环对比的方式实现.这里介绍一种更简单的方法,直接通过PHP函数实现.array_multisort() :可以用来一次对多个数组进行排序,或者根据 ...

  6. C语言 数组输出,冒泡排序法,沉底排序法,二维数组输出,输出字母列长度,从随机数组中找重复数

    #include <stdio.h> #define sum 3+4//宏定义是原封不动的使用used for test4 #include <time.h>//used fo ...

  7. PHP二维数组根据某个元素(key)排序

    /** * 二维数组根据key排序 * @param $arr * @param $arr_key * @param string $order 排序规则 * @return mixed */ fun ...

  8. iOS中获取本地通讯录联系人以及汉字首字母排序

    iOS中获取手机通讯录中的联系人信息: /*** 加载本地联系人*/ - (void)loadLocalContacts { //新建一个通讯录类 ABAddressBookRef addressBo ...

  9. oracle中检索结果汉字首字母排序详解

    今天写需求,要求将结果按照成本中心首字母排序,平且空放在最前面. 进入正题: 1.使用oracle自带的函数: 按照首字母排序:nlssort(xxx,'NLS_SORT=SCHINESE_PINYI ...

  10. 二维数组按某个键值排序 FOR PHP

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

随机推荐

  1. 最新AI生成视频工具!效果不输快手可灵,CogVideoX下载介绍

    要说AI生成视频最火的项目,当属国产的快手可灵了,甚至比OpenAI的Sora还要火,前者还是个ppt,可灵已经在落地公测了,博主在前段时间申请试用通道的时候,竟然排到几十万人开外的位置,好在最后还是 ...

  2. ARMv8-A 地址翻译技术之MMU的前世今生

    MMU的重要性不言而喻,支撑操作系统之上的各种复杂应用.但在正式讲MMU之前,我们先说说MMU的发展史,因为ARMv8-A的MMU相当复杂,直接切入正题,会显得比较枯燥.废话不多说,咱们马上开始: 一 ...

  3. 圣诞节快乐,教你用shell脚本实现一颗圣诞树。【小酷炫】

    前言 圣诞节到了! 一口君在这祝各位粉丝朋友圣诞节快乐! 祝各位考研的同学金榜题名! 祝找工作的朋友offer接到爆! 祝各位老板新年大发财源! 在此一口君特地用shell脚本画了一个圣诞树! 先来看 ...

  4. Linux库概念,动态库和静态库的制作,如何移植第三方库

    一.什么是库? 在windows平台和linux平台下都大量存在着库.一般是软件作者为了发布方便.替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接 ...

  5. 8. 从0学ARM-内联汇编、混合汇编、ATPCS规则

    一.gcc 内联汇编 内联汇编即在C中直接使用汇编语句进行编程,使程序可以在C程序中实现C语言不能完成的一些工作,例如,在下面几种情况中必须使用内联汇编或嵌入型汇编. 程序中使用饱和算术运算(Satu ...

  6. Win32 状态栏用法

    WIN32 状态控件用法 1.创建控件 状态栏类名: STATUSCLASSNAME #define STATUSCLASSNAMEW        L"msctls_statusbar32 ...

  7. git 修改提交作者及提交日期

    进入交互式 rebase 模式 git rebase -i <commit> 你要修改哪次提交的日期,就 rebase 到该提交的上一次提交. git 提示你新的分支要包含哪些提交,默认已 ...

  8. Cannot add task 'wrapper' as a task with that name already exists.

    写gradle项目的运行模板脚本 直接执行gradle clean build会报错 将原本的: task wrapper(type: Wrapper) { gradleVersion = '4.10 ...

  9. 补: Rest 风格请求处理的的内容补充(1)

    补: Rest 风格请求处理的的内容补充(1) Rest风格请求:注意事项和细节 客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter 如果哟啊SpringBoot ...

  10. dotnet 学习 CPF 框架笔记 了解 X11 里如何获取触摸信息

    本文记录我学习 CPF 框架的笔记,本文记录我阅读 CPF 框架,学习到了如何在 dotnet C# 里面获取到 X11 的触摸信息,获取到多指触摸以及触摸点的面积和触摸点压感等信息的方法 开始之前, ...