阿拉伯數字轉中文

來源:互聯網
上載者:User
好久沒寫了,最近剛好用到一個財務上的金額由數字轉換為中文的內容,寫了個函數實現,記錄下:

class MoneyConstConfig{    /**     * 金額數字中文映射     */    public static $NUM_CH_MAP = array(        0 => '零',        1 => '壹',        2 => '貳',        3 => '三',        4 => '肆',        5 => '伍',        6 => '陸',        7 => '柒',        8 => '捌',        9 => '玖',    );    /**     * 金額層次中文映射      */    public static $FINANCE_UNIT_MAP = array(        0  => '分',        1  => '角',        2  => '圓',        3  => '拾',        4  => '佰',        5  => '仟',        6  => '萬',        7  => '拾',        8  => '佰',        9  => '仟',        10 => '億',        11 => '拾',    );}

 '', // 仟萬     *              '8' => '', // 佰萬     *              '7' => '', // 拾萬     *              '6' => '', // 萬     *              '5' => '', // 仟     *              '4' => '', // 佰     *              '3' => '', // 拾     *              '2' => '', // 圓     *              '1' => '', // 角     *              '0' => '', // 分     *          );     */    public static function ticketFinanceChDesc($sourceNum)                                                                   [67/1580]    {        $sourceNum = number_format($sourceNum, 2, '.', '');  // 保證金額是精確到分        $numArr = self::parseNumToArr($sourceNum);         if (false !== ($key = array_search('.', $numArr))) {            unset($numArr[$key]);         }                $rnumArr = array_reverse($numArr);        $data = array();        $i = 0;        foreach ($rnumArr as $num) {            $data[$i++] = $num;        }                if ($i < self::MAX_FINANCE_LEN) {            $data[] = self::FINANCE_SYMBOL;         }        $data = array_pad($data, self::MAX_FINANCE_LEN, '');  // 高位用Null 字元佔位        $result = array_reverse($data);                return $result;    }                                                                                                                             [43/1580]    /**     * financeNumToCh      *      * @param double $sourceNum     * @static     * @access public     * @return string $chAmount     */    public static function financeNumToCh($sourceNum)    {        $sourceNum = number_format($sourceNum, 2, '.', '');  // 保證金額是精確到分        $numArr = self::parseNumToArr($sourceNum);         if (false !== ($key = array_search('.', $numArr))) {            unset($numArr[$key]);         }        $amount = array();        $numArrRev = array_reverse($numArr);        $i = 0;        foreach ($numArrRev as $num) {            $amount[$i++]  = $num;        }        $amount = array_reverse($amount, true);  // 這裡再一次反轉目的是保證key 的順序        $chAmount = self::convertNumArrToChStr($amount);        return $chAmount;    }    /**                                                                                                                      [15/1580]     * convertNumArrToChStr 將數字數群組轉換位中文數組     *      * @param array $numArr  待轉換的數字數組     * @static     * @access public     * @return string $chStr     */    public static function convertNumArrToChStr($numArr)    {        $data    = array();        $exists0 = false;  // 是否存在0         $chStr   = '';        $unitMap = array_flip(MoneyConstConfig::$FINANCE_UNIT_MAP);        $yuan = $unitMap[self::YUAN_POINT];        $wan  = $unitMap[self::WAN_POINT];        $yi   = $unitMap[self::YI_POINT];        foreach ($numArr as $key => $num) {            if ($num != 0) {                if ($exists0 === true) {                    $chStr   .= '零';                    $exists0 = false;                }                $chStr .= MoneyConstConfig::$NUM_CH_MAP[$num] . MoneyConstConfig::$FINANCE_UNIT_MAP[$key];             } else {                $exists0 = true;             }             if ($key == $yuan) {                $chStr = rtrim($chStr, self::YUAN_POINT);                $chStr .= self::YUAN_POINT;            } elseif ($key == $wan) {                $chStr = rtrim($chStr, self::WAN_POINT);                 $chStr .= self::WAN_POINT;            } elseif ($key == $yi) {                $chStr = rtrim($chStr, self::YI_POINT);                 $chStr .= self::YI_POINT;            }        }           return $chStr;    }    }

以上就介紹了阿拉伯數字轉中文,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.