当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP中使用asort进行中文排序失效的问题处理

PHP中使用asort进行中文排序失效的问题处理

2018年07月21日  | 移动技术网IT编程  | 我要评论

php中有非常方便的对数组进行重新排序的方法——asort,关于asort的使用方法可以看 。但是asort对含有中文key的数组进行排序时,有时候并不是按照字母顺序。这主要是编码问题,如果编码为utf-8,则不会按照字母顺序来排,解决方法是先转换成gbk编码,排序完再转回utf-8.

示例:有一个数组$pass,结构类似为

array
(
 [0] => stdclass object
  (
   [username] => 张三
   [password] => dq9uqqw2+uudoszpqmnyvgg9l+rhzb6lrzbvdvael9uobnf2ztwunykhzfjhbzch+lrsslrx9esqu/n3gslsua==
  )

 [1] => stdclass object
  (
   [username] => 李四
   [password] => 2p/3j50ibk1bymjhl+7/tt0d6luoqmn9m8klxjczbcajqth5749jftth17wxibz9p425b4kiv/xdv/7bu4pjaq==
  )

 [2] => stdclass object
  (
   [username] => 王五
   [password] => caq8lq0l6uxjprx+scbsbfuojsf+ox98gwo6c/aquxq/y/aj/l/ziegsxrsv+olck7ikojj4izzvx8dmpwzrra==
  )

 [3] => stdclass object
  (
   [username] => 赵六
   [password] => taxp4jx0vo3voflyanfgrsjzy76wqqhmnzyan9cyi20ukxlfmscxrfr3p525eimy0pg5zk8btbjos/rymxzjgq==
  )

)

使用下面的代码,将会把这个数组按照username的拼音排序。

foreach ($pass as $key) {
 $key->username = iconv('utf-8', 'gbk', $key->username);
}
asort( $pass );
foreach ($pass as $key) {
 $key->username = iconv('gbk', 'utf-8', $key->username);
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网