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. RabbitMQ普通集群同一宿主机docker搭建

    1.准备3个节点安装rabbitmq,搭建集群(注意:每个节点启动间隔15~20s,如果启动失败,需删除宿主机文件重新启动) 2.宿主机文件目录手动创建,并设置可操作权限 准备宿主机文件目录 cd / ...

  2. SCC缩点模板

    struct SCC { int top = 0, cntscc = 0, dfncnt = 0, n; vector<int> dfn, low, stk, instk; vector& ...

  3. SMU Autumn 2023 Round 4(Div.1+2)

    SMU Autumn 2023 Round 4(Div.1+2) A. Access Denied 通过分析样例可以得知如果所猜字符串与答案字符串长度不同,则只要\(5ms\),且答案最多\(20\) ...

  4. 从源码分析 SpringBoot 的 LoggingSystem → 它是如何绑定日志组件的

    开心一刻 今天心情不好,想约哥们喝点 我:心情不好,给你女朋友说一声,来我家,过来喝点 哥们:行!我给她说一声 我:你想吃啥?我点外卖 哥们:你俩定吧,我已经让她过去了 我:???我踏马让你过来!和她 ...

  5. Docker容器暴露ip至外网

    参考地址:https://blog.csdn.net/lvshaorong/article/details/69950694

  6. 初三年后集训测试---T1排序

    初三年后集训测试 $T 1 $ 排序 $$HZOI$$ ·题意: 给定 \(4n\) 个整数,求 : \[\max\{\sum_{i=1}^{4n}(A_{i,1} \times A_{i,2} - ...

  7. Windows PE 安装

    Microsoft 官方提供的 Windows PE 默认只有命令行界面.如果想要使用带有桌面环境的 Windows PE,推荐使用微 PE . 下载并安装 Windows ADK 和 WinPE 加 ...

  8. c++11 动态内存与智能指针详解

    c++ 动态内存与智能指针详解 一. 动态内存 (一)程序对象的生存期 全局对象在程序启动时分配,在程序结束时销毁. 对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁. 局部st ...

  9. Failed to convert value of type 'java.lang.String' to required type

    DEBUG 微信小程序Java后台 Failed to convert value of type 'java.lang.String' to required type 产生这种条件的原因一般是使用 ...

  10. AI实战 | 领克汽车线上营销助手:全面功能展示与效果分析

    助手介绍 我就不自我介绍了,在我的智能体探索之旅中,很多人已经通过coze看过我的教程.今天,我专注于分享我所开发的一款助手--<领克汽车线上营销>. 他不仅仅是一个销售顾问的替身,更是一 ...