• 党务问答:党组与党委有何区别? 2018-02-21
  • 杨浦区贯彻实施长护险 春节加班满足老人护理需求 2018-02-21
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-21
  • 冬奥观察:奥林匹克在“云”间 2018-02-20
  •  “不打烊”不等于“全配送” 快递如何保障春节网购 2018-02-20
  • 开创生态文明新时代 绘出美丽中国新图景 2018-02-20
  • 人民网驻阿尔及利亚记者报道集 2018-02-19
  • 党务问答:党组与党委有何区别? 2018-02-19
  • MINI车联网服务3月起升级至4G网络 增加新功能 2018-02-18
  • 以色列警方:已有足够的证据可以用于起诉以总理 2018-02-18
  • 冬奥会短节目第四 金博洋:伤病令我更强大 2018-02-18
  • 天津市北辰区委书记冯卫华:强化政治担当 把主体责任落实落细 2018-02-17
  • 正月初一客流继续回落 全国铁路预计发送旅客389万人次 2018-02-17
  • 送别余光中:诗人虽远行,乡愁永流传 2018-02-17
  • 集团原董事长违纪被查 人员伤亡事故频发 湖北宜化:去年亏损额超过公司市值 2018-02-17
  • 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编程之旅吧!