按首字母排序漢字

項目中須要一個選擇城市名的功能,具體的數據能夠到國家統計局的網站上查,直接搜索也有不少,好比http://blog.jjonline.cn/phptech/172.html。php

數據是有了,但是漢字怎麼按照字母排序呢?html

1、前端 js 處理

var a = ["上海","大連","北京","拉薩","天津"];
 
//返回["北京", "大連", "拉薩", "上海", "天津"]
a.sort(function(a,b){return a.localeCompare(b)});  

localeCompare

定義和用法

用本地特定的順序來比較兩個字符串。前端

語法

stringObject.localeCompare(target)
參數 描述
target 要以本地特定的順序與 stringObject 進行比較的字符串。

返回值

說明比較結果的數字。若是 stringObject 小於 target,則 localeCompare() 返回小於 0 的數。若是 stringObject 大於 target,則該方法返回大於 0 的數。若是兩個字符串相等,或根據本地排序規則沒有區別,該方法返回 0。json

那麼,具體到真實的 json 對象數組的處理就是:數組

var a = [
    {name: 'a', phone: 1, value: "上海"},
    {name: 'b', phone: 5, value: "大連"},
    {name: 'd', phone: 3, value: "北京"},
    {name: 'c', phone: 4, value: "拉薩"}
];
 
a.sort(function(a,b){
    return a.value.localeCompare(b.value)
}); 

2、後臺 php 處理

    foreach ($array as $key=>$value)  {  
        $new_array[$key] = iconv('UTF-8', 'GBK', $value);  
    }  
    asort($new_array);  
    foreach ($new_array as $key=>$value)  {  
        $array[$key] = iconv('GBK', 'UTF-8', $value);  
    }