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; }