Maison  >  Article  >  développement back-end  >  Comment convertir le montant et le chinois en php

Comment convertir le montant et le chinois en php

藏色散人
藏色散人original
2021-12-16 09:57:562725parcourir

Comment convertir le montant et le chinois en PHP : 1. Créez un exemple de fichier PHP ; 2. Convertissez le montant numérique en montant chinois majuscule via "public function convertAmountToCn($amount, $type = 1) {...}" Peut .

Comment convertir le montant et le chinois en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.4, ordinateur Dell G3.

Comment convertir le montant et le chinois en php ?

PHP Convertir le montant en majuscules chinoises

Le code est le suivant :

/**
     * 将数值金额转换为中文大写金额
     * @param $amount float 金额(支持到分)
     * @param $type   int   补整类型,0:到角补整;1:到元补整
     * @return mixed 中文大写金额
     */
    public function convertAmountToCn($amount, $type = 1) {
        // 判断输出的金额是否为数字或数字字符串
        if(!is_numeric($amount)){
            return "要转换的金额只能为数字!";
        }

        // 金额为0,则直接输出"零元整"
        if($amount == 0) {
            return "零元整";
        }

        // 金额不能为负数
        if($amount < 0) {
            return "要转换的金额不能为负数!";
        }

        // 金额不能超过万亿,即12位
        if(strlen($amount) > 12) {
            return "要转换的金额不能为万亿及更高金额!";
        }

        // 预定义中文转换的数组
        $digital = array(&#39;零&#39;, &#39;壹&#39;, &#39;贰&#39;, &#39;叁&#39;, &#39;肆&#39;, &#39;伍&#39;, &#39;陆&#39;, &#39;柒&#39;, &#39;捌&#39;, &#39;玖&#39;);
        // 预定义单位转换的数组
        $position = array(&#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;亿&#39;, &#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;万&#39;, &#39;仟&#39;, &#39;佰&#39;, &#39;拾&#39;, &#39;元&#39;);

        // 将金额的数值字符串拆分成数组
        $amountArr = explode(&#39;.&#39;, $amount);

        // 将整数位的数值字符串拆分成数组
        $integerArr = str_split($amountArr[0], 1);

        // 将整数部分替换成大写汉字
        $result = &#39;&#39;;//前缀
        $integerArrLength = count($integerArr);     // 整数位数组的长度
        $positionLength = count($position);         // 单位数组的长度
        for($i = 0; $i < $integerArrLength; $i++) {
            // 如果数值不为0,则正常转换
            if($integerArr[$i] != 0){
                $result = $result . $digital[$integerArr[$i]] . $position[$positionLength - $integerArrLength + $i];
            }else{
                // 如果数值为0, 且单位是亿,万,元这三个的时候,则直接显示单位
                if(($positionLength - $integerArrLength + $i + 1)%4 == 0){
                    $result = $result . $position[$positionLength - $integerArrLength + $i];
                }
            }
        }

        // 如果小数位也要转换
        if($type == 0) {
            // 将小数位的数值字符串拆分成数组
            $decimalArr = str_split($amountArr[1], 1);
            // 将角替换成大写汉字. 如果为0,则不替换
            if($decimalArr[0] != 0){
                $result = $result . $digital[$decimalArr[0]] . &#39;角&#39;;
            }
            // 将分替换成大写汉字. 如果为0,则不替换
            if($decimalArr[1] != 0){
                $result = $result . $digital[$decimalArr[1]] . &#39;分&#39;;
            }
        }else{
            $result = $result . &#39;整&#39;;
        }
        return $result;
    }

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn