Rumah php教程 php手册 php实现将人民币金额转大写的办法

php实现将人民币金额转大写的办法

Jun 21, 2016 am 08:48 AM
data self ZERO

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

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)$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;
  }
}
Salin selepas log masuk

使用过程也很简单,如下:

echo Num2Cny::ParseNumber(1234567.5);//www.Alixixi.com
Salin selepas log masuk

结果将输出:

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

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

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



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mar 01, 2024 pm 01:20 PM

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya

Bagaimana untuk menggunakan diri dalam Python Bagaimana untuk menggunakan diri dalam Python May 17, 2023 pm 10:40 PM

Bagaimana untuk menggunakan diri dalam Python

Apakah data yang terdapat dalam folder data? Apakah data yang terdapat dalam folder data? May 05, 2023 pm 04:30 PM

Apakah data yang terdapat dalam folder data?

Apa yang perlu dilakukan jika data beban mysql bercelaru? Apa yang perlu dilakukan jika data beban mysql bercelaru? Feb 16, 2023 am 10:37 AM

Apa yang perlu dilakukan jika data beban mysql bercelaru?

Apakah perbezaan antara xdata dan data? Apakah perbezaan antara xdata dan data? Dec 11, 2023 am 11:30 AM

Apakah perbezaan antara xdata dan data?

Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama Aug 31, 2024 am 12:59 AM

Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama

Tidak bolehkah data dalam komponen vue menjadi fungsi? Tidak bolehkah data dalam komponen vue menjadi fungsi? Dec 19, 2022 pm 05:22 PM

Tidak bolehkah data dalam komponen vue menjadi fungsi?

MySQL menulis log ralat gila MySQL menulis log ralat gila Feb 18, 2024 pm 05:00 PM

MySQL menulis log ralat gila

See all articles