php按中⽂排序,php按照中⽂⾸字母排序1> ⽹络上很多php的⼯具类可以将汉字转为拼⾳;
2> 将拼⾳进⾏排序即可
另⼀种则是类似mysql转码⽅式:
1 foreach ($array as $key=>$value)
2 {
3 $new_array[$key] = iconv('UTF-8', 'GBK', $value);
4 } 1 foreach ($array as $key=>$value)
2 {
3 $new_array[$key] = iconv('UTF-8', 'GBK', $value);
4 }
5 asort($new_array);
6 foreach ($new_array as $key=>$value)
7 {
8 $array[$key] = iconv('GBK', 'UTF-8', $value);
9 }
5 asort($new_array);
6 foreach ($new_array as $key=>$value)
7 {
8 $array[$key] = iconv('GBK', 'UTF-8', $value);
9 }
综合案列
//按中⽂⾸字母排序
function orderByName($userName,$order='asc',$key='jlname'){
foreach($userName as $name){
if(is_array($name))$char = getFirstChar($name[$key]);
elseif(is_string($name))$char= getFirstChar($name);
$nameArray = array();//将姓名按照姓的⾸字母与相对的⾸字母键进⾏配对
if(count($charArray[$char])!=0)$nameArray = $charArray[$char];
array_push($nameArray,$name);
$charArray[$char] = $nameArray;
}
if(strtolower($order)=='asc')ksort($charArray);elseif(strtolower($order)=='desc')krsort($charArray);
$newarr = array();
$i=0;
foreach($charArray as $ck=>$cv){
if(is_array($cv)){
foreach($cv as $cck=>$ccv){
$newarr[$i++] = $ccv;
}
}else{
$newarr[$i++]=$cv;
}
}
/*echo '按⾸字母排序前:
';
print_r($charArray);
//根据键值对排序
echo '按⾸字母排序后:
';
print_r($charArray);*/
return $newarr;
}
//获取中⽂的⾸字母
function getFirstChar($s){
$s0 = mb_substr($s,0,1,'utf-8');//获取名字的姓
$s = iconv('UTF-8','GBK', $s0);//将UTF-8转换成GB2312编码if(ord($s0)>128){//汉字开头,汉字没有以U、V开头的
$asc=ord($s{0})*256+ord($s{1})-65536;
if($asc>=-20319 and $asc<=-20284)return "A";
if($asc>=-20283 and $asc<=-19776)return "B";
if($asc>=-19775 and $asc<=-19219)return "C";
if($asc>=-19218 and $asc<=-18711)return "D";
if($asc>=-18710 and $asc<=-18527)return "E";
if($asc>=-18526 and $asc<=-18240)return "F";
if($asc>=-18239 and $asc<=-17760)return "G";
if($asc>=-17759 and $asc<=-17248)return "H";
if($asc>=-17247 and $asc<=-17418)return "I";
php初学者项目if($asc>=-17417 and $asc<=-16475)return "J";
if($asc>=-16474 and $asc<=-16213)return "K";
if($asc>=-16212 and $asc<=-15641)return "L";
if($asc>=-15640 and $asc<=-15166)return "M";
if($asc>=-15165 and $asc<=-14923)return "N";
if($asc>=-14922 and $asc<=-14915)return "O";
if($asc>=-14914 and $asc<=-14631)return "P";
if($asc>=-14630 and $asc<=-14150)return "Q";
if($asc>=-14149 and $asc<=-14091)return "R";
if($asc>=-14090 and $asc<=-13319)return "S";
if($asc>=-13318 and $asc<=-12839)return "T";
if($asc>=-12838 and $asc<=-12557)return "W";
if($asc>=-12556 and $asc<=-11848)return "X";
if($asc>=-11847 and $asc<=-11056)return "Y";
if($asc>=-11055 and $asc<=-10247)return "Z";
}elseif(ord($s)>=48 and ord($s)<=57){//数字开头
switch(iconv_substr($s,0,1,'utf-8')){
case 1:return "Y";
case 2:return "E";
case 3:return "S";
case 4:return "S";
case 5:return "W";
case 6:return "L";
case 7:return "Q";
case 8:return "B";
case 9:return "J";
case 0:return "L";
}
}else if(ord($s)>=65 and ord($s)<=90){//⼤写英⽂开头
return substr($s,0,1);
}else if(ord($s)>=97 and ord($s)<=122){//⼩写英⽂开头
return strtoupper(substr($s,0,1));
}else{
return iconv_substr($s0,0,1,'utf-8');//中英混合的词语提取⾸个字符即可}
}
mysql实现
如果当前数据库编码是utf-8,则进⾏转码,转为gbk,gbk默认汉字按照拼⾳排序存放:
1 SELECT * FROM USER ORDER BY convert(uname using gbk) ASC
如果当前编码为gbk则:
1 SELECT * FROM USER ORDER BY uname ASC
mysql排序的中⽂⾸字母排序和⾃定义排序
select * FROM organ_new where city_code = 'SZ0755' and organ_type = 'H' and state = '1' ORDER BY FIE ...
oc中⽂⾸字母排序
oc中⽂⾸字母排序 NSArray *arr2=@[@"⼩⾬",@"安安",@"⼩风",@"荣荣",@"张涛& ...
Java中实现对集合中对象按中⽂⾸字母排序
有⼀个person对象如下: public class Person { private String id;private String nam; } ⼀个list集合如下: List
java实现按中⽂⾸字母排序的⽅式
public class ABD { public static void main(String[] args) { //Collator类是⽤来执⾏区分语⾔环境的String⽐较的,这⾥是选择CH ...
javascript按中⽂⾸字母排序
resultValue=[ '武汉' , '北京' , '上海' , '天津' ] ; resultValue= resultValue.sort( function compareFunction( ...
mysql中⽂名字按⾸字母排序
在mysql数据库中可以使⽤GBK编码对中⽂进⾏排序,如名字按⾸字母排序 order by convert(substr(tu.username,1,1) using 'GBK') 其中substr⽅ ...
php⾥获取第⼀个中⽂⾸字母并排序
需求⾥结算⾸页需要按门店的⾸字母A-Z排序.我的数据结构原本是这样的: Array ( [0] => Array ( [sid] => 2885842 [recetcstoredpay] ...
关于java中实现在oracle数据库中实现对中⽂⾸字母进⾏排序的解决⽅案
⾸先介绍Oracle 9i新增加的⼀个系统⾃带的排序函数 1.按⾸字母排序 在oracle9i中新增了按照拼⾳.部⾸.笔画排序功能.设置NLS_SORT 值 SCHINESE_RADICAL_M ...
HashMap加⼊数据后,会⾃动根据⾸字母排序
1.Map> entityHashMap = new HashMap<>(); 然后增加⼀些数据,会发现根据String ...
随机推荐
Linux基础命令介绍七:⽹络传输与安全 wget curl rsync iptables
本篇接着介绍⽹络相关命令:wget ⽂件下载⼯具.curl ⽹络数据传输⼯具.rsync ⽂件传输⼯具等. 本篇接着介绍⽹络相关命令 1.wget ⽂件下载⼯具 wget [option]... [U ...
再次学习C+&plus;类之构造函数
学习C++类,⾸先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,⽽类中,⼀般是成员变量是私有的,成员函数是公有的,私有 ...
POJ 1099 Square Ice
Square Ice Description Square Ice is a two-dimensional arrangement of water molecules H2O, with oxyg ...
如何使⽤iframe实现隐藏的CSRF
ESMOD北京⾼级时装艺术学校&lowbar;百度百科
ESMOD北京⾼级时装艺术学校_百度百科 ESMOD北京⾼级时装艺术学校
(0)写给Web初学者的教案-----Web基础
0,Web基础 ⼀. What is the Web? Can It Eat? 很多同学可能都听说过⼀个名词叫做“Web”,这个词隐隐约约好像和我们上⽹相关.但是呢,⼜很难说的清楚.我们今天每位 ...
shell学习笔记(⼀)
1.第⼀⾏必须以#!/bin/bash #!表⽰脚本使⽤后⾯的解释器解释执⾏
3.接 ...
JVM-触发Full GC的情况
除直接调⽤外,触发Full GC执⾏的情况有如下四种: 1.⽼年代空间不⾜ ⽼年代空间只有在新⽣代对象转⼊及创建为⼤对象.⼤数组时才会出现不⾜现象,当执⾏Full GC后空间仍然不⾜ ...
Linux(CentOS) 查看当前占⽤CPU或内存最多的K个进程
⼀.可以使⽤以下命令查使⽤内存最多的K个进程 ⽅法1: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最⾼的三个,K=3说明:ps -aux中(a指 ...
逻辑读为何消耗CPU?
在数据库系统中,经常会看到这个说法:“逻辑读很消耗CPU”,然后开始把这句话当作⼀个定理来使⽤.但是为什么“同样是读,为什么逻辑读会使⽤那么多CPU?” 查了⼀些资料,配合⾃⼰的理解,有下⾯⼏点体会: ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论