我们用sort asort 对数组排序时 中文如何按拼音排序的问题
2013-09-25 08:07
288 查看
什么都不说,直接贴出来,自己 看
需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。
因为平时都是用utf8,这方面的需求比较多,写了一个简单的函数以后自用。
遍历转换为gb2312-》排序-》转换过来
function utf8_array_asort(&$array) {
if(!isset($array) || !is_array($array)) {
return false;
}
foreach($array as $k=>$v) {
$array[$k] = iconv('UTF-8', 'GB2312',$v);
}
asort($array);
foreach($array as $k=>$v) {
$array[$k] = iconv('GB2312', 'UTF-8', $v);
}
return true;
}
使用例子:
$abc = array('a'=>'才', 'b'=>'我','c'=>'啊','d'=>'滚','e'=>'d','f'=>'吧','z'=>'周');
utf8_array_asort($abc);
var_dump($abc);
补充: 今天使用这个函数发现,有些文字会出错,可能是utf8编码认不出某些字导致的“非法字符”,据说GBK字符集比较大,换成GBK,再加上IGNORE忽略掉不认识的字符 ,改成下面这样
private function utf8_array_asort(&$array) {
if(!isset($array) || !is_array($array)) {
return false;
}
foreach($array as $k=>$v) {
$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);
}
asort($array);
foreach($array as $k=>$v) {
$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);
}
return true;
}
php 数组中文排序
需要在php数组中用中文排序,但是一般使用utf8格式的文件,直接用asort排序不行。用gbk和gb2312可以。这跟几种格式的编码有关系。gbk和gb2312本身的编码就是用拼音排序的。因为平时都是用utf8,这方面的需求比较多,写了一个简单的函数以后自用。
遍历转换为gb2312-》排序-》转换过来
function utf8_array_asort(&$array) {
if(!isset($array) || !is_array($array)) {
return false;
}
foreach($array as $k=>$v) {
$array[$k] = iconv('UTF-8', 'GB2312',$v);
}
asort($array);
foreach($array as $k=>$v) {
$array[$k] = iconv('GB2312', 'UTF-8', $v);
}
return true;
}
使用例子:
$abc = array('a'=>'才', 'b'=>'我','c'=>'啊','d'=>'滚','e'=>'d','f'=>'吧','z'=>'周');
utf8_array_asort($abc);
var_dump($abc);
补充: 今天使用这个函数发现,有些文字会出错,可能是utf8编码认不出某些字导致的“非法字符”,据说GBK字符集比较大,换成GBK,再加上IGNORE忽略掉不认识的字符 ,改成下面这样
private function utf8_array_asort(&$array) {
if(!isset($array) || !is_array($array)) {
return false;
}
foreach($array as $k=>$v) {
$array[$k] = iconv('UTF-8', 'GBK//IGNORE',$v);
}
asort($array);
foreach($array as $k=>$v) {
$array[$k] = iconv('GBK', 'UTF-8//IGNORE', $v);
}
return true;
}
相关文章推荐
- java学习笔记
- openssl生成https证书
- 开源 免费 java CMS - FreeCMS-1.5 站内信
- 文件内存序列化和反序列化
- flex 添加带参数的监听事件
- 资料下载:敏捷个人的成长思考.pptx(第1次线下活动2011.04)
- DOM与javascript,jQuery的关系
- myeclipse破解教程,对所有版本有效,完美支持32位和64位
- c++ algorithm 泛型算法的方法实现原型
- c++ 泛型算法 numeric方法实现原型
- 数据库(mysql oracle)学习小结
- 单片机 IC 的丁点了解
- 25 - Divide Two Integers
- C语言中关于数组与指针和字符串与指针的小结
- 【Android病毒分析报告】 - Andorid新病毒“UkyadPay”
- myeclipse6.5注册码
- Oracle Clustered Table
- html页面中如何设置当光标移到一个固定区域时其形状变成手型,移出时恢复
- Interleaving String
- 使用PHP下载CSS文件中的图片的代码