Home >php教程 >php手册 >PHP中使用asort进行中文排序失效的解决方法

PHP中使用asort进行中文排序失效的解决方法

WBOY
WBOYOriginal
2016-06-06 20:13:111516browse

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

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);
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:HTTP中GET长度问题Next article:php socket编程学习笔记