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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
PHP header函数分析详解
Aug 06 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP中soap的用法实例
Oct 24 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
php实现session共享的实例方法
Sep 19 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 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
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
个人贷款承诺书
2014/03/28 职场文书
交通事故调解协议书
2014/04/16 职场文书
大班亲子运动会方案
2014/06/10 职场文书
劳动竞赛口号
2014/06/16 职场文书
校运会宣传稿大全
2015/07/23 职场文书
外出听课学习心得体会
2016/01/15 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书