溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)

發(fā)布時(shí)間:2021-11-01 11:32:32 來源:億速云 閱讀:191 作者:iii 欄目:編程語言

這篇文章主要介紹“php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)”,在日常操作中,相信很多人在php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

php漢字轉(zhuǎn)阿拉伯?dāng)?shù)的方法:1、創(chuàng)建一個(gè)PHP示例文件;2、初始化一個(gè)數(shù)組;3、將字符串按單位切分;4、將分組后的字符串轉(zhuǎn)化成數(shù)字并乘以單位即可。

php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版、DELL G3電腦

php 漢字怎么轉(zhuǎn)阿拉伯?dāng)?shù)?

php中文轉(zhuǎn)阿拉伯?dāng)?shù)字

面試題,當(dāng)時(shí)寫了一個(gè)漏洞百出,被人鄙視了,所以回來用一上午寫了一個(gè),自己測(cè)試了一下,好像還可以。

思路

如中文數(shù)字

七百七十八萬億四千七百二十億七千五百七十萬四千四百八十六

如果把紅色文字看做單位,那么用這些單位分割后,其他部分都是個(gè)十百千的數(shù)字。把這些數(shù)字乘以其單位求和,就是結(jié)果了。

代碼

function ch3num($str){
    //單位數(shù)組用于循環(huán)遍歷,單位順序從大到小
    $c = [
        '萬億'=>1000000000000,
        '億' => 100000000,
        '萬' => 10000,
    ];
    //中文替換數(shù)字規(guī)則,零沒什么卵用;所以去掉
    $b = [
        '一' =>1,
        '二' =>2,    
        '三' =>3,
        '四' =>4,
        '五' =>5,
        '六' =>6,
        '七' =>7,
        '八' =>8,
        '九' =>9,
        '零' =>'',
    ];
    //替換數(shù)字
    $str =  str_replace(array_keys($b), array_values($b), $str);
    //結(jié)果 7百7十8萬億4千7百2十億7千5百7十萬4千4百8十
  //如果字符串以十開頭,前邊加1
    if(mb_strpos($str, '十' ,0 ,'utf-8') === 0)
        $str = '1'.$str;
      
    //初始化一個(gè)數(shù)組
    $arr[] = array(
        'str'    => $str, //字符串
        'unit'  => 1,     //單位
    );
    //將字符串按單位切分
    foreach ($c as $key => $value) {
        $brr = [];
        foreach ($arr as $item) {
            if(strpos($item['str'], $key)){
                $sun = explode($key, $item['str'],2);
                $brr[] = [
                    'str' => $sun[0],
                    'unit' => $value,
                ];
                $brr[] = [
                    'str' => $sun[1],
                    'unit' => $item['unit'],
                ];
            }else{
                $brr[] = $item;
            }
        }
        $arr = $brr;
    }
    /*    結(jié)果
        (
        [0] => Array
            (
                [str] => 7百7十8
                [unit] => 1000000000000
            )
        [1] => Array
            (
                [str] => 4千7百2十
                [unit] => 100000000
            )
        [2] => Array
            (
                [str] => 7千5百7十
                [unit] => 10000
            )
        [3] => Array
            (
                [str] => 4千4百8十6
                [unit] => 1
            )
        )*/
    //遍歷求和
    $sum = 0;
    foreach ($arr as $item) {
        $sum += getNum($item['str'],$item['unit']);
    }
    return $sum;
}
//將分組后的字符串轉(zhuǎn)化成數(shù)字,并乘以單位
function getNum($str,$st){
    //倍數(shù)
    $a = [
        '千'=>1000,
        '百'=>100,
        '十'=>10
    ];
    //開始值
    $num = 0;
    //當(dāng)前值所在位數(shù)
    $step = 1;
    //單位
    $un = 1;
    $arr =  preg_split('/(?<!^)(?!$)/u', $str);
    while (count($arr)) {
        $m = array_pop($arr);
        //如果是位數(shù);更新倍數(shù)
        if(!empty($a[$m])){
            $step = $a[$m];
        }
        if(is_numeric($m)){
            $num += $m * $step;
        }
    }
    return $num * $st;
}

到此,關(guān)于“php漢字如何轉(zhuǎn)阿拉伯?dāng)?shù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI