php数组中包含中文的排序方法
functionutf8_array_asort(&$array){ if(!isset($array)||!is_array($array)){ returnfalse; } foreach($arrayas$k=>$v){ $array[$k]=iconv('UTF-8','GB2312',$v); } asort($array); foreach($arrayas$k=>$v){ $array[$k]=iconv('GB2312','UTF-8',$v); } returntrue; }
使用例子:
$abc=array('a'=>'猜','b'=>'我','c'=>'哦','d'=>'棍','e'=>'f','f'=>'爸','z'=>'州'); utf8_array_asort($abc); print_r($abc);
但是使用这个函数发现,有些文字会出错,可能是utf8编码认不出某些字导致的“非法字符”,据了解GBK字符集比较大,换成GBK,再加上IGNORE忽略掉不认识的字符,改成下面这样
privatefunctionutf8_array_asort(&$array){ if(!isset($array)||!is_array($array)){ returnfalse; } foreach($arrayas$k=>$v){ $array[$k]=iconv('UTF-8','GBK//IGNORE',$v); } asort($array); foreach($arrayas$k=>$v){ $array[$k]=iconv('GBK','UTF-8//IGNORE',$v); } returntrue; }