• 将数字类型的金钱转化为大写


      1 class MoneyUtil
      2 {
      3     static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");
      4     static $advanced=array(1=>"拾","佰","仟");
      5 
      6     /**
      7      *转为文字
      8      * @param $number
      9      * @return string
     10      */
     11     public static function ParseNumber($number)
     12     {
     13         $number=trim($number);
     14         if ($number>999999999999) return false;
     15         if ($number==0) return "零元";
     16         if(strpos($number,'.')){
     17             $number=round($number,2);
     18             $data=explode(".",$number);
     19             $data[0]=self::int($data[0]);
     20             $data[1]=self::dec($data[1]);
     21             return $data[0].$data[1];
     22         }else{
     23             return self::int($number).'整';
     24         }
     25     }
     26 
     27     private  static function int($number)
     28     {
     29         $arr=array_reverse(str_split($number));
     30         $data='';
     31         $zero=false;
     32         $zero_num=0;
     33         foreach ($arr as $k=>$v)
     34         {
     35             $_chinese='';
     36             $zero=($v==0)?true:false;
     37             $x=$k%4;
     38             if($x && $zero && $zero_num>1)continue;
     39             switch ($x){
     40                 case 0:
     41                     if($zero){
     42                         $zero_num=0;
     43                     }else{
     44                         $_chinese=self::$basical[$v];
     45                         $zero_num=1;
     46                     }
     47                     if($k==8){
     48                         $_chinese.='亿';
     49                     }elseif($k==4){
     50                         $_chinese.='万';
     51                     }
     52                     break;
     53                 default:
     54                     if($zero){
     55                         if($zero_num==1){
     56                             $_chinese=self::$basical[$v];
     57                             $zero_num++;
     58                         }
     59                     }else{
     60                         $_chinese=self::$basical[$v];
     61                         $_chinese.=self::$advanced[$x];
     62                     }
     63             }
     64             $data=$_chinese.$data;
     65         }
     66         if(empty($data))
     67         {
     68             $data = '零';
     69         }
     70         return $data.'元';
     71     }
     72 
     73     private static function dec($number)
     74     {
     75         if(strlen($number)<2) $number.='0';
     76         $arr=array_reverse(str_split($number));
     77         $data='';
     78         $zero_num=false;
     79         foreach ($arr as $k=>$v){
     80             $zero=($v==0)?true:false;
     81             $_chinese='';
     82             if($k==0){
     83                 if(!$zero){
     84                     $_chinese=self::$basical[$v];
     85                     $_chinese.='分';
     86                     $zero_num=true;
     87                 }
     88             }else{
     89                 if($zero){
     90                     if($zero_num){
     91                         $_chinese=self::$basical[$v];
     92                     }
     93                 }else{
     94                     $_chinese=self::$basical[$v];
     95                     $_chinese.='角';
     96                 }
     97             }
     98             $data=$_chinese.$data;
     99         }
    100         return $data;
    101     }
    102 } 
  • 相关阅读:
    简简单单的 JavaScript简写技巧
    常用的前端小知识
    nuxt项目部署对静态页重编译问题
    docker 容器部署nuxt项目
    mysql数据库损坏修复问题
    storm supervisor和nimbus启动自动消失的问题
    MATLAB基础知识
    音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
    处理树状结构数据以及 React渲染
    React Hooks 获取最新数据问题
  • 原文地址:https://www.cnblogs.com/diguaer/p/5609785.html
Copyright © 2020-2023  润新知