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

 2025-01-16  阅读 282  评论 8  点赞 421

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

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

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

示例:有一个数组$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);
}


标签:phpphp教程

评论列表:

  •   tg2087002654
     发布于 2天前回复该评论
  • 写的很不错,学到了!
显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0269秒, 内存占用1.93 MB, 访问数据库28次

冀ICP备19034377号