• 猪肉创八年新低部分养殖户巨亏离场 行业加速洗牌 2018-06-19
  • 招商证券:创业板反弹压力逐渐显现 2018-06-19
  • “一拖二快三”足球比分直400余名应届大学毕业生成为部队“准警官” 2018-06-19
  • 男子累计献血20万毫升 获选江苏"最美志愿者" 2018-06-19
  • 欧米茄全新推出新西兰酋长队腕表 2018-06-19
  • 財政部發文要求清理“有照無證”會計師事務所 2018-06-19
  • 八旬老人街头贴纸条求收养 称儿子同意其找人抚养 2018-06-18
  • 全国政协委员许鸿飞:让中国文化走出去 2018-06-18
  • 《谈判官》杨幂曝爱情观金句 演绎独立新女性获赞 2018-06-18
  • 江西南昌“2·25”火灾事故调查报告公布:39名责任人被处理 2018-06-17
  • Uber被黑客盗取5700万用户信息 付10万美元封口费 2018-06-17
  • 【政协常委会工作报告摘要】人民政协为保障和改善民生建言献策 2018-06-16
  • 义乌:以赶考状态破解法院执行难 2018-06-16
  • 我国实名登记无人机已超18万架 2018-06-16
  • 济南交警启动“抓拍风暴” 等信号灯时刷朋友圈记2分 2018-06-16
  • 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编程之旅吧!