<?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. 解决使用Spring Boot、Multipartfile实现上传提示无法找到文件的问题

    前言 SpringBoot使用MultiPartFile接收来自表单的file文件,然后进行服务器的上传是一个项目最基本的需求,我以前的项目都是基于SpringMVC框架搭建的,所以在使用Spring ...

  2. Leetcode 4.28 string

    1. 38. Count and Say 就是对于前一个数,找出相同元素的个数,把个数和该元素存到新的string里.数量+字符 class Solution { public String coun ...

  3. DNS 地址

    腾讯DNS:119.29.29.29百度DNS:  180.76.76.76  阿里DNS:223.5.5.5 223.6.6.6 成都电信: 61.139.2.69

  4. Java中JSON之全

    1.           在不知道你要转的对象的类型的时候,用com.alibaba.fastjson.JSON.parse();     Object parse = com.alibaba.fas ...

  5. 最小生成树——Prim算法和Kruskal算法

    洛谷P3366 最小生成树板子题 这篇博客介绍两个算法:Prim算法和Kruskal算法,两个算法各有优劣 一般来说当图比较稀疏的时候,Kruskal算法比较快 而当图很密集,Prim算法就大显身手了 ...

  6. LOJ子序列

    题目描述 https://loj.ac/problem/6074 题解 对于子序列的dp,我们可以设置一个dp. 我们设dp[i]表示以i这个字符结尾的子序列个数,转移为dp[i]+=∑dp[k]-d ...

  7. (转)spring异常抛出触发事务回滚策略

    背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼. spring异常抛出触发事务回滚策略 Spring.EJB的声明式事务默认情况下都是在抛出unchec ...

  8. ASP.NET and ADO.NET

    1.ASP.NET ASP.NET是一个使用HTML.Css.JacaScript  和服务器脚本创建网页和网站的开发框架 ASP.NET支持 WebPages.MVC.WebForms三种开发模式 ...

  9. echarts 折线拐点收藏

    拐点的样式有:

  10. [JSOI2010]满汉全席 2-SAT

    https://www.luogu.org/problemnew/show/P4171 意识到图中只有两种不同的菜系:满和汉 并且检查员类似于一个约束,可以发现这就是一个2-sat模型,满和汉分别对应 ...