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中的Class的几点个人看法
Oct 09 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP从FLV文件获取视频预览图的方法
Mar 12 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 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
FleaPHP的安全设置方法
2008/09/15 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
jQuery的ajax中使用FormData实现页面无刷新上传功能
2017/01/16 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
vue小白入门教程
2018/04/02 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
python opencv实现图像边缘检测
2019/04/29 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
超实用的 30 段 Python 案例
2019/10/10 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
入党积极分子自我鉴定范文
2014/03/25 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
法学自荐信
2014/06/20 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书