美文网首页
获取通讯库中外文首字排序(加强篇)

获取通讯库中外文首字排序(加强篇)

作者: 东西汉 | 来源:发表于2018-07-17 10:06 被阅读0次
      上一篇用到的获取首字母并不全面,对于通讯录中的一些生僻的姓都是返回NULL的,体验极差。于是在composer库中找到了基于词库的中文转拼音优质解决方案,同时附上一位大神的使用手册更准确的 PHP 汉字转拼音解决方案,于是上一个接口也就变成下面的
    <?php
    /**
     * 
     * @authors ZL 
     * @email 987968469@qq.com
     * @date    2017-12-14 11:23:35
     */
    namespace app\contact\model;
    
    use think\Model;
    use think\Db;
    use contact\Contact as ContactName;
    use Overtrue\Pinyin\Pinyin;
    
    class Contact extends Model {
        /**
         * 河长通讯录
         * @return bool|\think\response\Json
         */   
         public function getContactList(){
            $data = Db::name('admin_user')->alias('au')
                ->join('river_level rl','au.level = rl.id','left')
                ->field(['au.id userId','au.user_name userName','au.mobile','rl.level_name levelName','au.department','au.position','au.department_tel'])
                ->where("au.status",1)
                ->order('CONVERT(au.user_name USING gbk)')
                ->select()
                ;//Dump($data);die;
              //旧方法获取首字母,有些字获取不到
            // $firstName = new ContactName;
              // 小内存型
              $pinyin = new Pinyin(); // 默认
              // 内存型
              // $pinyin = new Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');
              // I/O型
              // $pinyin = new Pinyin('Overtrue\Pinyin\GeneratorFileDictLoader');
            $aaa = $bbb = $ccc = array();
            foreach($data as $k => $v){
                   $firstPinYin = $pinyin->name(mb_substr(trim($v['userName']), 0,1));
                   $firstCharacter = strtoupper(substr($firstPinYin[0], 0, 1)) ;
                //$firstCharacter = $firstName->_getFirstCharacter($v['userName']);
                if(in_array($firstCharacter,$bbb)){
                    array_push($ccc,$v);
                    $bbb['contact'] = $ccc;
                }else{
                    array_push($aaa,$bbb);
                    $bbb['firstPY'] = $firstCharacter;
                    $ccc = array();
                    array_push($ccc,$v);
                    $bbb['contact'] = $ccc;
                }               
            }
            array_push($aaa,$bbb);
            array_shift($aaa);
            return $aaa;        
         }

    相关文章

      网友评论

          本文标题:获取通讯库中外文首字排序(加强篇)

          本文链接:https://www.haomeiwen.com/subject/zskwpftx.html