您好,登錄后才能下訂單哦!
在PHP中使用asort對中文進行排序時失效如何解決?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
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); }
看完上述內容,你們掌握在PHP中使用asort對中文進行排序時失效如何解決的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。