PHP中使用asort进行中文排序失效的问题处理


Posted in PHP onAugust 18, 2014

PHP中有非常方便的对数组进行重新排序的方法——asort,关于asort的使用方法可以看 这里 。但是asort对含有中文key的数组进行排序时,有时候并不是按照字母顺序。这主要是编码问题,如果编码为UTF-8,则不会按照字母顺序来排,解决方法是先转换成GBK编码,排序完再转回UTF-8.

示例:有一个数组$pass,结构类似为

Array
(
 [0] => stdClass Object
  (
   [username] => 张三
   [password] => DQ9uqQW2+UudOsZpQMnyvGG9L+RHZB6LRzBVDvAEL9uOBNf2zTWUnykhZFjhbzCH+LrSslRx9eSqU/n3gSLSUA==
  )

 [1] => stdClass Object
  (
   [username] => 李四
   [password] => 2P/3j50ibk1BYmjHL+7/tt0d6LuOQMN9m8klXJCZbcajQtH5749jFTtH17WxiBZ9p425b4KIV/Xdv/7Bu4pJAQ==
  )

 [2] => stdClass Object
  (
   [username] => 王五
   [password] => caq8lq0l6uxJPRx+sCBsBFUojSF+ox98gwO6c/AquXQ/y/aj/l/ziEGsXRSV+olcK7iKOJJ4IZZvX8DMPWZRRA==
  )

 [3] => stdClass Object
  (
   [username] => 赵六
   [password] => taXp4jX0vO3VoFLyANfGrSjzy76WQQHMnzYAN9CyI20uKxLFMScXrFR3P525eImy0pG5zk8btBJoS/RyMxzJGQ==
  )

)

使用下面的代码,将会把这个数组按照username的拼音排序。

foreach ($pass as $key) {
 $key->username = iconv('UTF-8', 'GBK', $key->username);
}
asort( $pass );
foreach ($pass as $key) {
 $key->username = iconv('GBK', 'UTF-8', $key->username);
}
PHP 相关文章推荐
PHP开发中常用的8个小技巧
Aug 27 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
php array_search() 函数使用
Apr 13 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP中soap的用法实例
Oct 24 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
Yii2数据库操作常用方法小结
May 04 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 #PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 #PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 #PHP
mac环境中使用brew安装php5.5.15
Aug 18 #PHP
PHP 正则表达式常用函数
Aug 17 #PHP
PHP常用正则表达式集锦
Aug 17 #PHP
学习php中的正则表达式
Aug 17 #PHP
You might like
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
Webpack中publicPath路径问题详解
2018/05/03 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python使用scrapy解析js示例
2014/01/23 Python
用Python解决计数原理问题的方法
2016/08/04 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Django中使用Celery的教程详解
2018/08/24 Python
python实现矩阵打印
2019/03/02 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
PHP面试题大全
2015/10/16 面试题
中学教师岗位职责
2013/11/26 职场文书
财务会计专业推荐信
2013/11/30 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
合作协议书范本
2014/10/25 职场文书
见义勇为事迹材料
2014/12/24 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
晚会开场白和结束语
2015/05/29 职场文书