【PHP】数组按照字母排序
- /**
- * 将数组按字母A-Z排序
- * @return [type] [description]
- */
- private function chartSort($list)
- {
- // $user=$this->user;
- $data = [];
- foreach ($list as $k => $v) {
- $v['letter'] = $this->getFirstChart($v['name']);
- if (empty($data[$v['letter']])) {
- $data[$v['letter']] = [];
- }
- $data[$v['letter']][] = $v;
- }
- $i = 0;
- foreach ($data as $k => $v) {
- $li[$i]['letter'] = $k;
- $li[$i]['list'] = $v;
- $i++;
- }
- sort($li);
- return $li;
- }
- /**
- * 返回取汉字的第一个字的首字母
- * @param [type] $str [string]
- * @return [type] [strind]
- */
- private function getFirstChart($str){
- if( empty($str) ){
- return '';
- }
- $char=ord($str[0]);
- if( $char >= ord('A') && $char <= 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 null;
- }
【PHP】数组按照字母排序的更多相关文章
- 086-PHP数组按数字排序和按字母排序
<?php $arr=array(2,54,167,'a','A','12'); //定义一个数组 echo '数组排序之前的信息:<br />'; print_r($arr); / ...
- [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能
感谢eoe社区的分享 最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...
- php数组的各种排序
转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/11/2207494.html 如果你已经使用了一段时间PHP的话,那么,你应 ...
- 联系人的侧边字母索引ListView 将手机通讯录姓名通过首字母排序。
package com.lixu.letterlistview; import java.util.ArrayList; import java.util.List; import org.apa ...
- Android 联系人字母排序(仿微信)
现在很多APP只要涉及到联系人的界面,几乎都会采取字母排序以及导航的方式.作为程序猿,这种已经普及的需求还是需要学习的,于是小生开始了在网上默默的学习之路,网上学习的资料质量参差不齐,不过也有很不错的 ...
- Java比较器对数组,集合排序一
数组排序非常简单,有前辈们的各种排序算法,再加上Java中强大的数组辅助类Arrays与集合辅助类Collections,使得排序变得非常简单,如果说结合比较器Comparator接口和Collato ...
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
转载:http://blog.csdn.net/xiaanming/article/details/12684155 转载请注明出处:http://blog.csdn.net/xiaanming/ar ...
- 数组Array.sort()排序的方法
数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...
- PHP 字符串数组按照拼音排序的问题
拼音排序的规则: 字符串包括特殊字符.数字.英文字符.中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英 ...
随机推荐
- Golang语言系列-15-数据库
数据库 MySQL 连接数据库 package main import ( "database/sql" "fmt" _ "github.com/go ...
- 【错误】element cannot be mapped to a null key
element cannot be mapped to a null key的解决方法 报错: ERROR [o.a.c.c.C.[.[.[/sa].[dispatcherServlet]] - Se ...
- Asp.Net Core Razor页面中使用echarts展示图形
Asp.Net Core Razor页面中使用echarts展示图形 要在Razor页面中使用echarts显示图形,主要问题点在于如何将数据传递给js文件. 1,下载安装echarts库文件 首先引 ...
- Java之Listener
Java之Listener Listener监听器 监听器有很多种,大部分还是在GUI用的比较多,这里简单记录一点关于HttpSessionListener的 统计session count List ...
- Spring中为什么不建议使用字段注入
在使用Idea中通过注解注入字段时是否遇见过这样一个提示: Field injection is not recommended(不推荐使用字段注入) 一. 什么是字段注入,Spring中依赖注入的方 ...
- Django3使用WebSocket实现WebShell
前言 最近工作中需要开发前端操作远程虚拟机的功能,简称WebShell. 基于当前的技术栈为react+django,调研了一会发现大部分的后端实现都是django+channels来实现websoc ...
- .net core 通过动软连接数据库
.net core 与动软 首先创建asp.net core 或者 .net core 控制台程序.不需急着创建web.config 文件. 通过NuGet加个ado的包 System.Data.Sq ...
- 六:使用Cookie进行会话管理
1.存储客户端的状态 因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器 记住客户端状态 2.会话技术 ...
- java web课程设计(简单商城的前后端双系统,基于maven三模块开发)
1.系统分析 1.1需求分析 实现一个简单但功能完整的商城项目,从设计到实现,规范化完成该项目,锻炼javaweb项目的编写能力,理解软件工程的软件设计思想 1.2编程技术简介 本次课程主要使用的软件 ...
- Linkerd 2.10(Step by Step)—控制平面调试端点
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...