PHP 根据中文首字母分组排序

/**
* 全部市
*/
public function citys(){
if($this->request->isPost()){
d a t a s = [ ] ; i f ( ! datas = []; if (! datas=[];if(!datas) {
$citylist = Db::name(‘amap’)->where(‘level’,‘city’)->field(‘id,name,center’)->select();

            foreach ($citylist as $k=>$v){
                $citylist[$k]['gname']=getFirstCharter($v['name']);
            }
            //根据字段last_name对数组$data进行降序排列
            $last_names = array_column($citylist,'gname');
            array_multisort($last_names,SORT_ASC,$citylist);
            foreach ($citylist as $kk=>$vv){
                $datas[$vv['gname']][] = $vv;
            }
            return json(['citylist' => $datas]);
        }
    }
}

//获取首字母(大写)
function getFirstCharter(KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (empty(str)) {
return ‘’;
}
f c h a r = o r d ( fchar = ord( fchar=ord(str{0});
if ($fchar >= ord(‘A’) && f c h a r < = o r d ( ′ z ′ ) ) r e t u r n s t r t o u p p e r ( fchar <= ord('z')) return strtoupper( fchar<=ord(z))returnstrtoupper(str{0});
$s1 = iconv(‘UTF-8’, ‘gb2312’, $str);
$s2 = iconv(‘gb2312’, ‘UTF-8’, $s1);
$s = $s2 == $str ? $s1 : $str;
a s c = o r d ( asc = ord( asc=ord(s{0}) * 256 + ord( s 1 ) − 65536 ; i f ( s{1}) - 65536; if ( s1)65536;if(asc >= -20319 && a s c < = − 20284 ) r e t u r n ′ A ′ ; i f ( asc <= -20284) return 'A'; if ( asc<=20284)returnA;if(asc >= -20283 && a s c < = − 19776 ) r e t u r n ′ B ′ ; i f ( asc <= -19776) return 'B'; if ( asc<=19776)returnB;if(asc >= -19775 && a s c < = − 19219 ) r e t u r n ′ C ′ ; i f ( asc <= -19219) return 'C'; if ( asc<=19219)returnC;if(asc >= -19218 && a s c < = − 18711 ) r e t u r n ′ D ′ ; i f ( asc <= -18711) return 'D'; if ( asc<=18711)returnD;if(asc >= -18710 && a s c < = − 18527 ) r e t u r n ′ E ′ ; i f ( asc <= -18527) return 'E'; if ( asc<=18527)returnE;if(asc >= -18526 && a s c < = − 18240 ) r e t u r n ′ F ′ ; i f ( asc <= -18240) return 'F'; if ( asc<=18240)returnF;if(asc >= -18239 && a s c < = − 17923 ) r e t u r n ′ G ′ ; i f ( asc <= -17923) return 'G'; if ( asc<=17923)returnG;if(asc >= -17922 && a s c < = − 17418 ) r e t u r n ′ H ′ ; i f ( asc <= -17418) return 'H'; if ( asc<=17418)returnH;if(asc >= -17417 && a s c < = − 16475 ) r e t u r n ′ J ′ ; i f ( asc <= -16475) return 'J'; if ( asc<=16475)returnJ;if(asc >= -16474 && a s c < = − 16213 ) r e t u r n ′ K ′ ; i f ( asc <= -16213) return 'K'; if ( asc<=16213)returnK;if(asc >= -16212 && a s c < = − 15641 ) r e t u r n ′ L ′ ; i f ( asc <= -15641) return 'L'; if ( asc<=15641)returnL;if(asc >= -15640 && a s c < = − 15166 ) r e t u r n ′ M ′ ; i f ( asc <= -15166) return 'M'; if ( asc<=15166)returnM;if(asc >= -15165 && a s c < = − 14923 ) r e t u r n ′ N ′ ; i f ( asc <= -14923) return 'N'; if ( asc<=14923)returnN;if(asc >= -14922 && a s c < = − 14915 ) r e t u r n ′ O ′ ; i f ( asc <= -14915) return 'O'; if ( asc<=14915)returnO;if(asc >= -14914 && a s c < = − 14631 ) r e t u r n ′ P ′ ; i f ( asc <= -14631) return 'P'; if ( asc<=14631)returnP;if(asc >= -14630 && a s c < = − 14150 ) r e t u r n ′ Q ′ ; i f ( asc <= -14150) return 'Q'; if ( asc<=14150)returnQ;if(asc >= -14149 && a s c < = − 14091 ) r e t u r n ′ R ′ ; i f ( asc <= -14091) return 'R'; if ( asc<=14091)returnR;if(asc >= -14090 && a s c < = − 13319 ) r e t u r n ′ S ′ ; i f ( asc <= -13319) return 'S'; if ( asc<=13319)returnS;if(asc >= -13318 && a s c < = − 12839 ) r e t u r n ′ T ′ ; i f ( asc <= -12839) return 'T'; if ( asc<=12839)returnT;if(asc >= -12838 && a s c < = − 12557 ) r e t u r n ′ W ′ ; i f ( asc <= -12557) return 'W'; if ( asc<=12557)returnW;if(asc >= -12556 && a s c < = − 11848 ) r e t u r n ′ X ′ ; i f ( asc <= -11848) return 'X'; if ( asc<=11848)returnX;if(asc >= -11847 && a s c < = − 11056 ) r e t u r n ′ Y ′ ; i f ( asc <= -11056) return 'Y'; if ( asc<=11056)returnY;if(asc >= -11055 && $asc <= -10247) return ‘Z’;
return null;

}

公众号技术谈论
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值