• 两男子在吉大美食城“百元找零”诈骗? 2018-08-12
  • 突破!郑鹏创中国队冬残奥会个人项目最好成绩 2018-08-12
  • 今年铜陵市将治理水土流失面积36平方公里 2018-08-11
  • 篮球投注技巧 2018-08-11
  • 威海马上就可以接种四价宫颈癌疫苗 附接种地点 2018-08-10
  • 德赫亚暗示博格巴,像我这样才能在曼联取得成功! 2018-08-10
  • 广州出台“红棉计划”吸引海外人才来穗创新创业 2018-08-10
  • 不敌吉林队 四川男篮赛季排名倒数第二收官 2018-08-10
  • 北京榜样,我为你点一个大大的赞 2018-08-09
  • 石家庄空气质量排名"后十"的乡镇将被约谈 2018-08-08
  • 日本公布秘密文件:美日曾密谋“瓜分”中国(图) 2018-08-08
  • 秦岭户外救援现状调查 志愿者组队救援费用AA制均摊 2018-08-08
  • 皇台酒业为证券虚假陈述案埋单,8名投资者将获赔近62万元 2018-08-08
  • 中科大揭示酵母酶的“钻戒”结构 可优化癌症的个性化治疗 2018-08-08
  • 市场多变难选股 机构斗法巧持仓 2018-08-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编程之旅吧!