<?php
header("content-type:text/html;charset=utf-8");
$array=array('重庆市','上海市','安徽省','吉林省','天津市','内蒙古自治区','沈阳市','浙江省','广东省','云南省');
foreach($array as $value){
$arr[]=iconv('UTF-8', 'GBK', $value);
}
$res=asort($arr);
var_dump($arr);
#array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" }
foreach($arr as $val){
$arrs[]=iconv('GBK','UTF-8',$val);
}
var_dump($arrs);
#array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" }

foreach($array as $value){
$arr[]=iconv('UTF-8', 'GB2312', $value);
}
$res=asort($arr);

foreach($arr as $val){
$arrs[]=iconv('GB2312','UTF-8',$val);
}
var_dump($arrs);

#array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" }

?>

不管是GBK还是GB2312在汉字排序的时候,有多音字的情况会导致排序不准确,例如重庆(chong)会被认为是zhong,从而导致排序不准确,所以在做汉字排序的时候,最好能用二维数组,将汉字和拼音都存在一起,这样比较好排序。

php 汉字排序的更多相关文章

  1. Java汉字排序(3)按笔划排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  2. Java汉字排序(2)按拼音排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按拼音排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  3. NSArray利用Cocoa框架进行汉字排序

    NSArray利用Cocoa框架进行汉字排序 在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一个本地化的比較结果.也就是说这个函数是支持汉字 ...

  4. Jtable 表格按多列排序(支持中文汉字排序)

    这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...

  5. MySQL按照汉字的拼音排序,mysql汉字排序

    按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字37 ...

  6. Java汉字排序(1)排序前要了解的知识(数组和list的排序接口)

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按拼音排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  7. NSArray进行汉字排序

    由于NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完毕按A~Z的排序,这看起来是个头疼的问题.由于牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将 ...

  8. java 对 汉字排序(按照拼音字母排序)

    业务场景: 一个list集合,里面add了若干个实体类,针对该实体类排序的属性为String. 使用技术,自定义list排序(JDK自带),重写Comparator接口的compare方法,汉字转拼音 ...

  9. oracle汉字排序

    oracle在9i之前是对汉字的排序是按照二进制编码进行排序的,很不适合我们的国情,在oracle9i之后,汉字的排序方式有了以下三种方式:        1.使用拼音排序   NLS_SORT=SC ...

随机推荐

  1. oracle之Flash Recovery Area全面介绍 (转载)

    1. 设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的 ...

  2. web_profile(网站分析)配置

    web_profiler: # DEPRECATED, it is not useful anymore and can be removed # safely from your configura ...

  3. Laravel 实现 Facades 功能

    使用过Laravel的同学都知道Facades 的强大,下面就让我们一起创建一个Facades 实例.如有不正确的地方,还请不吝赐教. 1. 实现Laravel的自动加载功能 首先建立目录app/li ...

  4. Dividing (hdu 1059 多重背包)

    Dividing Sample Input 1 0 1 2 0 0 价值为1,2,3,4,5,6的物品数目分别为 1 0 1 2 0 0,求能否将这些物品按价值分为两堆,转化为多重背包.1 0 0 0 ...

  5. linux环境下deb格式文件转换成rpm格式

    以 alien_8.87.tar.gz 为例: 下载.安装 alien_8.87.tar.gz [root@shyn ~]# wget http://ftp.de.debian.org/debian/ ...

  6. 开源C/C++网络库比较

    在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO. ACE是一 ...

  7. 从Hello, world开始认识IL <第一篇>

    IL代码分析方法 Hello, world历史 .NET学习方法论 1.引言 1988年Brian W.Kernighan和Dennis M.Ritchie合著了软件史上的经典巨著<The C ...

  8. 扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注

    原文 http://blog.csdn.net/esricd/article/details/7587136 在ArcGIS API for Silverlight/WPF中原版的TextSymbol ...

  9. 【转】【经典算法】——KMP,深入讲解next数组的求解

    前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k:但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导 ...

  10. Merge k Sorted Lists 解答

    Question Merge k sorted linked lists and return it as one sorted list. Analyze and describe its comp ...