PHP中使用asort进行中文排序失效的问题处理
程序员文章站
2022-07-09 21:57:01
php中有非常方便的对数组进行重新排序的方法——asort,关于asort的使用方法可以看 。但是asort对含有中文key的数组进行排序时,有时候并不是按照字母顺序。这...
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); }
上一篇: 大数据来临,企业还未就绪?
下一篇: ASP.NET MVC 控制器