您好,欢迎访问一九零五行业门户网

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

asort() 函数对数组进行排序并保持索引关系。主要用于对那些单元顺序很重要的结合数组进行排序。可选的第二个参数包含了附加的排序标识。如果成功则返回 true,
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);}
其它类似信息

推荐信息