<?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. pycharm .sqlite文件拖动到Database里面为空

    pycharm .sqlite文件拖动到Database里面为空 查资料得到解决方法:

  2. Mint-UI组件 MessageBox为prompt 添加判断条件

    Mint-UI 的Message Box 是prompt类型时,可以添加正则判断或者function判断条件.具体可以查看Mint-UI源码. 添加正则判断条件: MessageBox({ $type ...

  3. 学习java接口知识

    学习java接口知识 //一个类最多只能有一个直接的父类.但是有多个间接的父类. java是单继承. class ye_01{ String name; } class fu_01 extends y ...

  4. 一文入门HTML5

    1.HTML5 上节回顾:一文读懂ES6(附PY3对比) | 一文入门NodeJS 演示demo:https://github.com/lotapp/BaseCode/tree/master/java ...

  5. MySQL 水平拆分与垂直拆分详解

    前言:说到优化mysql,总会有这么个回答:水平拆分,垂直拆分,那么我们就来说说什么是水平拆分,垂直拆分. 一.垂直拆分 说明:一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将 ...

  6. ArcGis dbf读写——挂接Excel到属性表 C#

    ArcMap提供了挂接Excel表格信息到属性表的功能,但是当数据量较大到以万计甚至十万计的时候这个功能就歇菜了,当然,你可以考虑分段挂接.这个挂接功能只是做了一个表关联,属性记录每个字段的信息需要通 ...

  7. $refs的用法及作用

    获取DOM元素,一般用document.querySelector获取这个dom节点,然后在获取input的值 但是用ref绑定之后,就不需要在获取dom节点了,直接在上面的input上绑定input ...

  8. 半导体制造、Fab以及Silicon Processing的基本知识

    本文转载自微信公众号 - 手机技术资讯 , 链接 https://mp.weixin.qq.com/s/602xLKXcIw4ccTnhvDP1xw

  9. Gephi——使用map of countries和Geo Layout实现包含地理坐标的数据可视化

    前言: Gephi(以下内容基于0.9.2)比较擅长用来处理社会网络分析,其自身以及插件对地理数据的支持非常不足.主要有以下几点: 1.map of countries这个插件可以在gephi底图上以 ...

  10. linxu上安装mongodb3.6实战

    根据linux 版本到官网下载对应mongodb版本 查看服务器版本:cat /proc/version 查看linux发行版本:cat /etc/redhat-release 我用的阿里云服务器,对 ...