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

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

WBOY
WBOYOriginal
2016-06-06 20:13:111488Durchsuche

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);
}
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:HTTP中GET长度问题Nächster Artikel:php socket编程学习笔记