程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php數組中包含中文的排序方法

php數組中包含中文的排序方法

編輯:PHP綜合
php數組中文排序,文件格式一般用utf8,直接用asort排序不行。若是gbk和gb2312可以。這跟編碼有關。gbk和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'=>'f','f'=>'爸','z'=>'州');
utf8_array_asort($abc);
print_r($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;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved