这天做个页面,需要将图片表里面图片的标签拉出来拆分好后去重按自然排序。结果很囧,应该排序的结果是0-9-A-z-阿-中,但是中文部分就是很乱。再找问题,结果发现自然排序是按照字符编码的顺序来排列。由于当前页面是UTF-8编码,UTF-8大家应该清楚吧,我称为是“电脑码”,给电脑看的~汗…… 如果换成GBK或者GB2312编码就不会这样了,这跟汉字在字符集的编码有关。比如”人”这个字,在GBK和GB2312中就是按它的拼音”ren”的字母顺序排到第N个位置,而UTF-8编码就不是这样了(没有具体研究怎么排的)。OK 知道原因就简单了,排序前将字符转到GBK,排序完了再转回来就OK。

$this->db->select(‘#imgs’,”tags”,”,”);//相当于查询imgs表中所有的tags字段

$tags = $this->db->getAll();//获得查询结果

$tagslist = $tlist = array();

foreach ($tags as $tagarray){

$tag = explode(‘ ‘,$tagarray[‘tags’]);//字段是多个标签组成的字符串,这里分解下

foreach($tag as $t){

if(!in_array($t,$tagslist) && !empty($t)){//去重去空

$t = iconv(‘UTF-8’, ‘GBK’, $t);

$tagslist[] = $t;//得到标签数组,GBK编码

}

}

}

asort($tagslist);//排序数组 ,可以用别的自然排序函数natsort,natcasesort

foreach($tagslist as $list){

$list = iconv( ‘GBK’, ‘UTF-8’,$list);

if(!in_array($list,$tlist)){//转回来仍然要去重

$tlist[]=$list;//这里重新给个数组就是为了获得新的KEY,后面模板输出要用到换行

}

}

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP数组排序关于按中文拼音排序的问题 http://www.chhua.com/web-note620

随机笔记

更多

php 按汉字拼音排序,PHP数组排序关于按中文拼音排序的问题相关推荐

  1. oracle 中文拼音取首字母,ORACLE依据中文拼音首字母排序、取得中文拼音首字母函数...

    当前位置:我的异常网» 数据库 » ORACLE依据中文拼音首字母排序.取得中文拼音首字母 ORACLE依据中文拼音首字母排序.取得中文拼音首字母函数 www.myexceptions.net  网友 ...

  2. mysql中文拼音排序

    在MySQL数据库中使用UTF-8的编码进行排序会出现不按照中文拼音的顺序排序 解决这个问题的方案是把编码重新设定为GBK或者BG2312 但是问题又来了 数据库重设编码实在是个大问题 显然不能这样使 ...

  3. 超级列表框排序mysql,易语言超级列表框排序源码

    易语言超级列表框排序源码.版本 2 .支持库 iext .程序集 窗口程序集1 .程序集变量 集_中文, 文本型, , "0" .程序集变量 集_中文排序, 整数型, , &quo ...

  4. ubuntu文本输入源,找不到中文拼音输入源

    ubuntu系统输入源找不到拼音输入源解决方案: (前提是先安装好ibus输入法) 1.终端打开系统设置命令:unity-control-center. 2.系统设置显示不正常(内容特别少)时,更新: ...

  5. kali 2.0 安装中文拼音和五笔输入法

    1.打开命令行终端,输入以下命令进行安装五笔和拼音输入法: apt-get install fcitx fcitx-table-wbpy 期间,需要用户确认是否安装,您只需直接回车就好了. kali ...

  6. 汉字转拼音,中文拼音排序器

    汉字转拼音 NSMutableString *ms = [[NSMutableString alloc] initWithString:@"我是中国人"]; if (CFStrin ...

  7. 【我的Android进阶之旅】Android实现中文汉字笔划(笔画)排序、中文拼音排序、英文排序的国家地区选择界面

    一.需求描述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 微信:简体中文.拼音排序 微信:繁体中文.笔画排序 微信 英文 字母排 ...

  8. Java字母笔顺_Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    一.需求描述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 微信:简体中文.拼音排序 微信:繁体中文.笔画排序 微信 英文 字母排 ...

  9. Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排序;繁体 ...

最新文章

  1. bash shell实现二进制与十进制数的互转
  2. POJ2762(判断无向图的弱连通)
  3. 【博客园2018总结帖】21天,在Github上获取 6300 star
  4. 【详细说明】nginx反向代理wss websocket
  5. Android滑动到顶部悬停
  6. 正则表达式的贪婪与非贪婪模式
  7. 大规模虚拟化,舍我其谁?
  8. CLR via C# 读书笔记 3-6 比较APM和EAP(异步编程模型和基于事件的编程模式)
  9. 复旦计算机系统基础课件,复旦大学软件工程考研(MSE)计算机系统基础复习资料.ppt...
  10. 华为是怎样研发的(1)——概述
  11. 用scrapy爬虫无数据
  12. okhttp3调用接口超时
  13. 计算机通信与网络(一)
  14. b-tree和b+tree以及mysql为什么使用了b+树
  15. 使用AFNetworking进行网络状态的监测
  16. 房价必然增长的十个原因
  17. plsql-数据查询(二、条件查询)
  18. TensorFlow学习笔记——(3)TF2常用函数
  19. ABAP中的SET UPDATE TASK LOCAL是什么意思?
  20. ChatGPT+Word的智能化文字生成和应用

热门文章

  1. Ueditor编辑器图片上传
  2. linux 7 内核崩溃重启,centos7无故重启-内核升级
  3. 解决Bootstrap字体图标glyphicon无法显示的问题
  4. 2019-4-30今天给来学习的学员做了几道试题,提前祝大家劳动节愉快
  5. JDK、Tomcat安装步骤
  6. 贾跃亭被法院列入“老赖”黑名单,这下真成“下周回国假药停”了?
  7. StarUML使用指南
  8. 福利: 安卓上运行Python爬虫
  9. dns服务器未响应解决
  10. 怎么用记事本写html文件