<?php
/**
* 错误状态码定义
* User: xiucai
* Date: 2018/3/11
* Time: 12:23
*/ namespace extend; class Wordsgroup
{ /**
* 二维数组根据首字母分组排序
* @param array $data 二维数组
* @param string $targetKey 首字母的键名
* @return array 根据首字母关联的二维数组
*/
public function groupByInitials(array $data, $targetKey = 'name')
{
$word=[];
foreach ($data as $k=> $v) {
$key=$this->getInitials($v[$targetKey]);
if(isset($word[$key])){
array_push($word[$key],$data[$k]);
}else{
$word[$key][]=$data[$k];
}
} ksort($word);
return $word;
} /**
* 获取首字母
* @param string $str 汉字字符串
* @return string 首字母
*/
public function getInitials($str)
{
error_reporting('E_ALL');
try {
if (empty($str)) {return '';}
$fchar = ord($str{0});
if ($fchar >= ord('A') && $fchar <= ord('z')) {
return strtoupper($str{0});
} $s1 = iconv('UTF-8', 'gb2312', $str);
$s2 = iconv('gb2312', 'UTF-8', $s1);
$s = $s2 == $str ? $s1 : $str;
$asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
if ($asc >= -20319 && $asc <= -20284) {
return 'A';
} if ($asc >= -20283 && $asc <= -19776) {
return 'B';
} if ($asc >= -19775 && $asc <= -19219) {
return 'C';
} if ($asc >= -19218 && $asc <= -18711) {
return 'D';
} if ($asc >= -18710 && $asc <= -18527) {
return 'E';
} if ($asc >= -18526 && $asc <= -18240) {
return 'F';
} if ($asc >= -18239 && $asc <= -17923) {
return 'G';
} if ($asc >= -17922 && $asc <= -17418) {
return 'H';
} if ($asc >= -17417 && $asc <= -16475) {
return 'J';
} if ($asc >= -16474 && $asc <= -16213) {
return 'K';
} if ($asc >= -16212 && $asc <= -15641) {
return 'L';
} if ($asc >= -15640 && $asc <= -15166) {
return 'M';
} if ($asc >= -15165 && $asc <= -14923) {
return 'N';
} if ($asc >= -14922 && $asc <= -14915) {
return 'O';
} if ($asc >= -14914 && $asc <= -14631) {
return 'P';
} if ($asc >= -14630 && $asc <= -14150) {
return 'Q';
} if ($asc >= -14149 && $asc <= -14091) {
return 'R';
} if ($asc >= -14090 && $asc <= -13319) {
return 'S';
} if ($asc >= -13318 && $asc <= -12839) {
return 'T';
} if ($asc >= -12838 && $asc <= -12557) {
return 'W';
} if ($asc >= -12556 && $asc <= -11848) {
return 'X';
} if ($asc >= -11847 && $asc <= -11056) {
return 'Y';
} if ($asc >= -11055 && $asc <= -10247) {
return 'Z';
} return '其他';
}catch (Exception $e) {
return '其他';
}
} }

PHP获取汉字首字母并分组排序的更多相关文章

  1. 获取汉字首字母并分组排列 PHP

    1.代码class Character{ /** * 数组根据首首字母排序 */ /** * 二维数组根据首字母分组排序 * @param array $data 二维数组 * @param stri ...

  2. php获取汉字首字母

    php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return ...

  3. python获取汉字首字母

    获取汉字首字母 关注公众号"轻松学编程"了解更多. 应用场景之一:可用于获取名字首字母,在数据库中查询记录时,可以用它来排序输出. from pytz import unicode ...

  4. JS获取汉字首字母

    //获取 汉字首字母 function makePy(str) { if (typeof (str) != "string") throw new Error(-1, " ...

  5. ASP.NET获取汉字首字母

    /// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...

  6. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  7. .NET获取汉字首字母

    /// <summary> /// 获取汉字首字母(可包含多个汉字) /// </summary> /// <param name="strText" ...

  8. php获取汉字首字母的函数

    本文介绍用php实现汉字转化为首字母的方法,主要功能是:功能明确,易于修改维护和扩展: 英文的字串:不变返回(包括数字):中文字符串:返回拼音首字符: 中英混合串: 返回拼音首字符和英文. 网上的方法 ...

  9. php获取汉字首字母实例

    在我们实际开发工作中,有时候需要获取输入汉字的首字母,然后存到库中,方便用户搜索相关信息,下面给出php代码,留做备用: //新添加获取汉子首字,首字字母 function pinyin($zh){ ...

随机推荐

  1. b树和hash树的应用场景

    关系型数据库中,索引大多采用B/B+树来作为存储结构,而全文搜索引擎的索引则主要采用hash的存储结构,这两种数据结构有什么区别?       如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经 ...

  2. 如何获得select被选中option的value和text

    如何获得select被选中option的value和text 一:JavaScript原生的方法 1:拿到select对象: var myselect=document.getElementById( ...

  3. JetBrain系列IDE提示Filesystem Case-Sensitivity Mismatch的解决

    目录 解决方法 1. 用文本编辑器修改APP包文件中的属性文件(不推荐) 2. 复制或新建属性文件到APP的启动目录,添加对应的属性项(推荐) 解决方法1 1. 用文本编辑器修改APP包文件中的属性文 ...

  4. Hibernate对应关系(了解)

    布置的任务要用就写一下总结一下 hibernate有以下几种关系 一对一 一对多 多对一 多对多 首先这些对应关系是分单向和双向的 单向和双向有什么区别呢? 这个双向单向是面向对象的说法 意思就是你更 ...

  5. Java 8 特性 —— 方法引用

    方法引用通过方法的名字来指向一个方法.方法引用可以使语言的构造更紧凑简洁,减少冗余代码.方法引用使用一对冒号 :: .下面,我们在 Car 类中定义了 4 个方法作为例子来区分 Java 中 4 种不 ...

  6. 查看macOS下正在使用的zsh

    使用dscl . -read /Users/$USER UserShell查看 如果你的结果是/bin/zsh,又恰巧用brew安装了zsh的话,那么你可能就白安装了 将brew安装的zsh添加到/e ...

  7. Floyed-Warshall【弗洛伊德算法】

    首先介绍一下有关最短路径的知识 从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径.解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算 ...

  8. JS学习笔记Day24

    一.闭包和函数 (一)什么是闭包函数 概念:简单说就是函数中嵌套函数,嵌套在这里面的函数叫做闭包函数,外面的函数叫做闭包环境 作用:通过闭包函数,可以访问到闭包函数所在局部作用域中的变量及参数 特点: ...

  9. docker 删除镜像

    有时候我们不需要某个镜像,需要对它进行删除.1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有cont ...

  10. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...