最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • php实现将人民币金额转大写的办法

    工作中偶尔会碰到需要将人民币金额,也即阿拉伯数字转化为大写汉字的这种情况,下面是作者经过实践总结出来的方法,特此记录以防备忘。

    class Num2Cny{
      static $basical=array(0=>'零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
      static $advanced=array(1=>'拾','佰','仟');
      public static function ParseNumber($number){
        $number=trim($number);
        if(!is_numeric($number)||intval($number)>999999999999) return 'error';
        if($number==0) return '零';
        if(strpos($number,'.')){
          $number=round($number,2);
          $data=explode('.',$number);
          $data[0]=self::int($data[0]);
          $data[1]=self::dec($data[1]);
          return $data[0].$data[1];
        }else{
          return self::int($number).'整';
        }
      }
      public static function int($number){
        $arr=array_reverse(str_split($number));
        $data='';
        $zero=false;
        $zero_num=0;
        foreach($arr as $k=>$v){
          $_chinese='';
          $zero=($v==0)?true:false;
          $x=$k%4;
          if($x && $zero && $zero_num>1)continue;
          switch($x){
            case 0:
              if($zero){
                $zero_num=0;
              }else{
                $_chinese=self::$basical[$v];
                $zero_num=1;
              }
              if($k==8){
                $_chinese.='亿';
              }elseif($k==4){
                $_chinese.='万';
              }
              break;  
            default:
              if($zero){
                if($zero_num==1){
                  $_chinese=self::$basical[$v];
                  $zero_num++;
                }
              }else{
                $_chinese=self::$basical[$v];
                $_chinese.=self::$advanced[$x];
              }
          }
          $data=$_chinese.$data;
        }
        return $data.'元';
      }
      public static function dec($number){
        if(strlen($number)<2) $number.='0';
        $arr=array_reverse(str_split($number));
        $data='';
        $zero_num=false;
        foreach($arr as $k=>$v){
          $zero=($v==0)?true:false;
          $_chinese='';
          if($k==0){
            if(!$zero){
              $_chinese=self::$basical[$v];
              $_chinese.='分';
              $zero_num=true;
            }
          }else{
            if($zero){
              if($zero_num){
                $_chinese=self::$basical[$v];
              }
            }else{
              $_chinese=self::$basical[$v];
              $_chinese.='角';
            }
          }
          $data=$_chinese.$data;
        }
        return $data;
      }
    }

    使用过程也很简单,如下:

    echo Num2Cny::ParseNumber(1234567.5);

    结果将输出:

    壹佰贰拾叁万肆仟伍佰陆拾柒元伍角

    另外说明一下的是如果仅需要将阿拉伯数字转化为大写的情况下,可参照本站文章:

    PHP将阿拉伯数字转化为汉字的函数

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » php实现将人民币金额转大写的办法
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情