php字母排序

1.utf8  和  gbk的区别?php

2.汉字使用的是utf8可否实现按照拼音首字母排序?mysql

3.utf8  和  gbk  相互转化?git

4.mysql中怎样实现?github

5.php如何实现sql


简单说:utf8  国际范,谁均可以解析。gbk    国产,中英文皆两个字节数组

只有使用gbk,才能够实现按照汉字首字母排序函数

在mysql中,一条sql语句,能够临时改变字符编码,排序。默认使用的utf8,须要转为gbkthis

SELECT * FROM tableName ORDER BY CONVERT( filed_name USING gbk );
 

php实现:编码

<?php
/**
 * Created by PhpStorm.
 * User: wangjiapeng
 * Date: 2018/7/6
 * Time: 18:12
 */

class my_array_sort{

    public $array;
    public $key_name = 'nickname';
    public $old_type = 'utf-8';
    public $new_type = 'gbk';
    public $sort_order = SORT_ASC;
    public $sort_type = SORT_NUMERIC;

    public function __construct($arr)
    {
        if($arr['data']){
            $this->array = $arr['data'];
        }else{
           $this->error('data');
        }
        if($arr['key_name']){
            $this->key_name = $arr['key_name'];
        }else{
            $this->error('key_name');
        }
    }

    /**
     * @param $array      须要转化的二维数组
     * @param $key_name   二维数组待转还的字段
     * @param $old_type   目前的字符编码
     * @param $new_type   待转化的字符编码
     * @return mixed
     * Name: array_chane_code
     * User: wangjiapeng
     * Date: 2018/07/06
     * Explain:二维数组个别字段字符编码转换
     */
   static public function array_change_code($array = array(),$key_name_value,$old_type_value,$new_type_value){
        array_walk($array, function(&$value) use ($key_name_value,$old_type_value,$new_type_value){
            $value[$key_name_value] = iconv($old_type_value, $new_type_value, $value[$key_name_value]);
        });

        return $array;
    }

    /**
     * @param $arrays           需排序的数组
     * @param $sort_key         需排序的字段
     * @param int $sort_order   字段排序 array_multisort()
     * @param int $sort_type    排序类型 array_multisort()
     * @return array|bool
     * Name: my_array_sort
     * User: wangjiapeng
     * Date:2018/07/06
     * Explain:二维数组排序
     */
    static public function my_array_sort($arrays = array(),$sort_key_value,$sort_order_value,$sort_type_value){
        if(is_array($arrays)){
            foreach ($arrays as $key=>$array){
                if(is_array($array)){
                    $key_arrays[] = $array[$sort_key_value];
                }else{
                    return false;
                }
            }
        }else{
            return false;
        }
        array_multisort($key_arrays,$sort_order_value,$sort_type_value,$arrays);
        return $arrays;
    }

    /**
     * @return mixed
     * Name: do_array
     * User: wangjiapeng
     * Date: 2018/07/06
     * Explain:执行操做
     */
    public function do_array(){
        //对utf8数据转为gbk
        $new_arr = self::array_change_code($this->array,$this->key_name,$this->old_type,$this->new_type);
        //对转事后的gbk数据,字段排序
        $new_arr = self::my_array_sort($new_arr,$this->key_name,$this->sort_order,$this->sort_type);
        //排序完成,对gbk数据转为utf8
        $result_arr = self::array_change_code($new_arr,$this->key_name,$this->new_type,$this->old_type);

        return $result_arr;
    }

    /**
     * @param $key
     * Name: error
     * User: wangjiapeng
     * Date: 2018/07/06
     * Explain:错误提示
     */
    private function error($key){
        echo $key."参数错误";die;
    }

}
GitHub地址:https://github.com/wangjiapengadmin/easyArraySort             githup
更新:PHP5.5+

排序方法更新:使用PHP内置函数spa

static public function my_array_sort($arrays = array(),$sort_key_value,$sort_order_value,$sort_type_value){
        array_multisort(array_column($arrays,$sort_key_value),$sort_order_value,$sort_type_value);
        return $arrays;
    }