按首字母排序汉字

项目中须要一个选择城市名的功能,具体的数据能够到国家统计局的网站上查,直接搜索也有不少,好比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);  
    }