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);
}
评论列表:
发布于 4天前回复该评论
发布于 4天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 3天前回复该评论
发布于 2天前回复该评论
发布于 2天前回复该评论