<?php header("content-type:text/html;charset=utf-8"); $array=array('重庆市','上海市','安徽省','吉林省','天津市','内蒙古自治区','沈阳市','浙江省','广东省','云南省'); foreach($array as $value){ $arr[]=iconv('UTF-8', 'GBK', $value); } $res=asort($arr); var_dump($arr); #array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" } foreach($arr as $val){ $arrs[]=iconv('GBK','UTF-8',$val); } var_dump($arrs); #array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" }
foreach($array as $value){ $arr[]=iconv('UTF-8', 'GB2312', $value); } $res=asort($arr);
foreach($arr as $val){ $arrs[]=iconv('GB2312','UTF-8',$val); } var_dump($arrs);
#array(10) { [0]=> string(9) "安徽省" [1]=> string(9) "广东省" [2]=> string(9) "吉林省" [3]=> string(18) "内蒙古自治区" [4]=> string(9) "上海市" [5]=> string(9) "沈阳市" [6]=> string(9) "天津市" [7]=> string(9) "云南省" [8]=> string(9) "浙江省" [9]=> string(9) "重庆市" }
?>
不管是GBK还是GB2312在汉字排序的时候,有多音字的情况会导致排序不准确,例如重庆(chong)会被认为是zhong,从而导致排序不准确,所以在做汉字排序的时候,最好能用二维数组,将汉字和拼音都存在一起,这样比较好排序。
|
请发表评论