当前位置:首页 > PHP教程 > php数组 > 列表

php数组中包含中文的排序方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-02-03 16:56:38 浏览: 评论:0 

这篇文章主要介绍了php数组中包含中文的排序方法,需要的朋友可以参考下。

php数组中文排序,文件格式一般用utf8,直接用asort排序不行。若是gbk和gb2312可以。这跟编码有关。gbk和gb2312本身的编码就是用拼音排序的。

代码如下:

  1. function utf8_array_asort(&$array) { 
  2. if(!isset($array) || !is_array($array)) { 
  3.   return false; 
  4. foreach($array as $k=>$v) { 
  5.   $array[$k] = iconv('UTF-8''GB2312',$v); 
  6. asort($array); 
  7. foreach($array as $k=>$v) { 
  8.   $array[$k] = iconv('GB2312''UTF-8'$v); 
  9. return true; 

使用例子:

  1. $abc = array('a'=>'猜''b'=>'我','c'=>'哦','d'=>'棍','e'=>'f','f'=>'爸','z'=>'州'); 
  2. utf8_array_asort($abc); 
  3. print_r($abc); 

但是使用这个函数发现,有些文字会出错,可能是utf8编码认不出某些字导致的“非法字符”,据了解GBK字符集比较大,换成GBK,再加上IGNORE忽略掉不认识的字符 ,改成下面这样:

  1. private function utf8_array_asort(&$array) { 
  2.   if(!isset($array) || !is_array($array)) { 
  3.    return false; 
  4.   } 
  5.   foreach($array as $k=>$v) { 
  6.    $array[$k] = iconv('UTF-8''GBK//IGNORE',$v); 
  7.   } 
  8.   asort($array); 
  9.   foreach($array as $k=>$v) { 
  10.    $array[$k] = iconv('GBK''UTF-8//IGNORE'$v); 
  11.   } 
  12.   return true; 

Tags: php数组中文排序

分享到: