• 新希望!中超19岁新星半年增重十斤 曾戏耍恒大两国脚 2018-10-17
  • 迎丰收 晒丰收 庆丰收 2018-10-15
  • “捂脸表情”被注册成商标?申请人不认为商标侵权 2018-10-15
  • 战巡南海、绕岛巡航…空军有“飞出去”的主心骨 2018-10-14
  • 幼儿园要求家长写一万字读后感:不能这样玩家长|幼儿园|家长-教育时讯 2018-10-13
  • 中国故宫文物展在希腊举行 2018-10-13
  • 車·晓 第26期 車企官方降价真相幾何? 2018-10-12
  • 宝沃总裁杨嵩:曾和奔驰宝马同水平 已不能同日而语 2018-10-11
  • 新时代党员干部要有更大的担当和作为 2018-10-10
  • “2018-雷霆”专项行动破获百余起台湾间谍案 2018-10-09
  • 朝韩首脑今起在平壤会晤 “金文会”将聚焦三大议题 2018-10-09
  • 2018顺义啤酒节--北京频道--人民网 2018-10-08
  • 台湾遭遇的“断交潮”有无化解之道? 2018-10-08
  • 习近平会见爱沙尼亚总统卡柳莱德 2018-10-08
  • 中国空间站研制建设正有序开展 坚持和平利用 2018-10-07
  • php实现将人民币金额转大写的办法

    栏目: 编程语言 发布于: 2014-04-25 05:00:01

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

    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);//www.phpernote.com

    结果将输出:

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

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

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

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:php实现将人民币金额转大写的办法
    IT技术书籍推荐:
    Android编程权威指南
    Android编程权威指南
    菲利普斯 (Brian Hardy) (作者), 哈迪 (Bill Phillips) (作者), 王明发 (译者)
    Big Nerd Ranch是美国一家专业的移动开发技术培训机构,《Android编程权威指南》主要以训练营的5天教学课程为基础,融合了两位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南?!禔ndroid编程权威指南》共37章,详细介绍了GeoQuiz、HelloMoon、DragAndDraw等8个Android应用。这些应用的难易程度不一,最复杂的CriminalIntent应用占用了13章的篇幅。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得最前沿的开发经验。   如果你熟悉Java语言,或者了解对面向对象编程,那就立刻开始Android编程之旅吧!