国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP獲取漢字首字母并分組排序

pkhope / 3146人閱讀

摘要:二維數(shù)組根據(jù)首字母分組排序二維數(shù)組首字母的鍵名根據(jù)首字母關(guān)聯(lián)的二維數(shù)組按字母排序獲取首字母漢字字符串首字母項目中直接引入即可,如果需要命名空間,可以自行添加,下面是我們看看怎么用。

寫在前面

經(jīng)常我們在做項目的時候,會有按首字母排序的需求
比如:
美團(tuán)的城市選擇 http://www.meituan.com/index/...
app中按字母搜索

正題

網(wǎng)上找了各種,不盡人意,于是,自己就寫了一個,分享給大家。

 $this->getInitials($item[$targetKey]),
            ]);
        }, $data);
        $data = $this->sortInitials($data);
        return $data;
    }

    /**
     * 按字母排序
     * @param  array  $data
     * @return array
     */
    public function sortInitials(array $data)
    {
        $sortData = [];
        foreach ($data as $key => $value) {
            $sortData[$value["initials"]][] = $value;
        }
        ksort($sortData);
        return $sortData;
    }
    
    /**
     * 獲取首字母
     * @param  string $str 漢字字符串
     * @return string 首字母
     */
    public function getInitials($str)
    {
        if (empty($str)) {return "";}
        $fchar = ord($str{0});
        if ($fchar >= ord("A") && $fchar <= ord("z")) {
            return strtoupper($str{0});
        }

        $s1  = iconv("UTF-8", "gb2312", $str);
        $s2  = iconv("gb2312", "UTF-8", $s1);
        $s   = $s2 == $str ? $s1 : $str;
        $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
        if ($asc >= -20319 && $asc <= -20284) {
            return "A";
        }

        if ($asc >= -20283 && $asc <= -19776) {
            return "B";
        }

        if ($asc >= -19775 && $asc <= -19219) {
            return "C";
        }

        if ($asc >= -19218 && $asc <= -18711) {
            return "D";
        }

        if ($asc >= -18710 && $asc <= -18527) {
            return "E";
        }

        if ($asc >= -18526 && $asc <= -18240) {
            return "F";
        }

        if ($asc >= -18239 && $asc <= -17923) {
            return "G";
        }

        if ($asc >= -17922 && $asc <= -17418) {
            return "H";
        }

        if ($asc >= -17417 && $asc <= -16475) {
            return "J";
        }

        if ($asc >= -16474 && $asc <= -16213) {
            return "K";
        }

        if ($asc >= -16212 && $asc <= -15641) {
            return "L";
        }

        if ($asc >= -15640 && $asc <= -15166) {
            return "M";
        }

        if ($asc >= -15165 && $asc <= -14923) {
            return "N";
        }

        if ($asc >= -14922 && $asc <= -14915) {
            return "O";
        }

        if ($asc >= -14914 && $asc <= -14631) {
            return "P";
        }

        if ($asc >= -14630 && $asc <= -14150) {
            return "Q";
        }

        if ($asc >= -14149 && $asc <= -14091) {
            return "R";
        }

        if ($asc >= -14090 && $asc <= -13319) {
            return "S";
        }

        if ($asc >= -13318 && $asc <= -12839) {
            return "T";
        }

        if ($asc >= -12838 && $asc <= -12557) {
            return "W";
        }

        if ($asc >= -12556 && $asc <= -11848) {
            return "X";
        }

        if ($asc >= -11847 && $asc <= -11056) {
            return "Y";
        }

        if ($asc >= -11055 && $asc <= -10247) {
            return "Z";
        }

        return null;
    }

}

項目中直接引入即可,如果需要命名空間,可以自行添加,下面是我們看看怎么用。

// 按首字母排序
$data = [
    ["id" => 1, "area_name" => "山東"],
    ["id" => 2, "area_name" => "江蘇"],
    ["id" => 3, "area_name" => "安徽"],
    ["id" => 4, "area_name" => "福建"],
    ["id" => 5, "area_name" => "江西"],
    ["id" => 6, "area_name" => "廣東"],
    ["id" => 7, "area_name" => "廣西"],
    ["id" => 8, "area_name" => "海南"],
    ["id" => 9, "area_name" => "河南"],
    ["id" => 10, "area_name" => "湖南"],
    ["id" => 11, "area_name" => "湖北"],
];
// 初始化,然后調(diào)用分組方法
$data = (new Character)->groupByInitials($data, "area_name");

下面的結(jié)果是不是你想要的呢,不論是做app還是網(wǎng)頁,都可以用

$data = array(
    "A" => array(
        0 => array(
            "id" => 3,
            "area_name" => "安徽",
            "initials" => "A"
        )
    ) ,
    "F" => array(
        0 => array(
            "id" => 4,
            "area_name" => "福建",
            "initials" => "F"
        )
    ) ,
    "G" => array(
        0 => array(
            "id" => 6,
            "area_name" => "廣東",
            "initials" => "G"
        ) ,
        1 => array(
            "id" => 7,
            "area_name" => "廣西",
            "initials" => "G"
        )
    ) ,
    "H" => array(
        0 => array(
            "id" => 8,
            "area_name" => "海南",
            "initials" => "H"
        ) ,
        1 => array(
            "id" => 9,
            "area_name" => "河南",
            "initials" => "H"
        ) ,
        2 => array(
            "id" => 10,
            "area_name" => "湖南",
            "initials" => "H"
        ) ,
        3 => array(
            "id" => 11,
            "area_name" => "湖北",
            "initials" => "H"
        )
    ) ,
    "J" => array(
        0 => array(
            "id" => 2,
            "area_name" => "江蘇",
            "initials" => "J"
        ) ,
        1 => array(
            "id" => 5,
            "area_name" => "江西",
            "initials" => "J"
        )
    ) ,
    "S" => array(
        0 => array(
            "id" => 1,
            "area_name" => "山東",
            "initials" => "S"
        )
    )
);

原文 http://www.tech1024.cn/origin...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30659.html

相關(guān)文章

  • 實戰(zhàn)PHP導(dǎo)出Excel-CSV文件

    摘要:中國大陸幾乎所有的中文系統(tǒng)和國際化的軟件都支持。與相應(yīng)的國家標(biāo)準(zhǔn)中的其它漢字,以上合計個漢字。,全稱國家標(biāo)準(zhǔn)信息技術(shù)中文編碼字符集,是中華人民共和國現(xiàn)時最新的內(nèi)碼字集,是信息技術(shù)信息交換用漢字編碼字符集基本集的擴(kuò)充的修訂版。 實戰(zhàn)PHP導(dǎo)出Excel-CSV文件 導(dǎo)出后的效果 先給各位看一下導(dǎo)出的效果,而后再進(jìn)行代碼分析 showImg(https://segmentfault.co...

    Kyxy 評論0 收藏0
  • 實戰(zhàn)PHP導(dǎo)出Excel-CSV文件

    摘要:中國大陸幾乎所有的中文系統(tǒng)和國際化的軟件都支持。與相應(yīng)的國家標(biāo)準(zhǔn)中的其它漢字,以上合計個漢字。,全稱國家標(biāo)準(zhǔn)信息技術(shù)中文編碼字符集,是中華人民共和國現(xiàn)時最新的內(nèi)碼字集,是信息技術(shù)信息交換用漢字編碼字符集基本集的擴(kuò)充的修訂版。 實戰(zhàn)PHP導(dǎo)出Excel-CSV文件 導(dǎo)出后的效果 先給各位看一下導(dǎo)出的效果,而后再進(jìn)行代碼分析 showImg(https://segmentfault.co...

    molyzzx 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<