GORAGOD.com

freelance, web developer, web designer, hosting, domain name

แปลงตัวเลขเป็นตัวหนังสือ PHP

ฟังก์ชั่นแปลงตัวเลข (จำนวนเงิน) เป็นตัวหนังสือ (บาท) รองรับทศนิยม เป็นสตางค์ หากมีทศนิยมมากกว่า 2 ตำแหน่ง จะคืนค่าเป็นตัวเลข ทศนิยม
<?php
function bathformat($number) {
  $numberstr = array('ศูนย์','หนึ่ง','สอง','สาม','สี่','ห้า','หก','เจ็ด','แปด','เก้า','สิบ');
  $digitstr = array('','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน');

  $number = str_replace(",","",$number); // ลบ comma
  $number = explode(".",$number); // แยกจุดทศนิยมออก

  // เลขจำนวนเต็ม
  $strlen = strlen($number[0]);
  $result = '';
  for($i=0;$i<$strlen;$i++) {
    $n = substr($number[0], $i,1);
    if($n!=0) {
      if($i==($strlen-1) AND $n==1){ $result .= 'เอ็ด'; }
      elseif($i==($strlen-2) AND $n==2){ $result .= 'ยี่'; }
      elseif($i==($strlen-2) AND $n==1){ $result .= ''; }
      else{ $result .= $numberstr[$n]; }
      $result .= $digitstr[$strlen-$i-1];
    }
  }
  
  // จุดทศนิยม
  $strlen = strlen($number[1]);
  if ($strlen>2) { // ทศนิยมมากกว่า 2 ตำแหน่ง คืนค่าเป็นตัวเลข
    $result .= 'จุด';
    for($i=0;$i<$strlen;$i++) {
      $result .= $numberstr[(int)$number[1][$i]];
    }
  } else { // คืนค่าเป็นจำนวนเงิน (บาท)
    $result .= 'บาท';
    if ($number[1]=='0' OR $number[1]=='00' OR $number[1]=='') {
      $result .= 'ถ้วน';
    } else {
      // จุดทศนิยม (สตางค์)
      for($i=0;$i<$strlen;$i++) {
        $n = substr($number[1], $i,1);
        if($n!=0){
          if($i==($strlen-1) AND $n==1){$result .= 'เอ็ด';}
          elseif($i==($strlen-2) AND $n==2){$result .= 'ยี่';}
          elseif($i==($strlen-2) AND $n==1){$result .= '';}
          else{ $result .= $numberstr[$n];}
          $result .= $digitstr[$strlen-$i-1];
        }
      }
      $result .= 'สตางค์';
    }
  }
  return $result;
}

ตัวอย่างการใช้งาน
bathformat(1521); // หนึ่งพันห้าร้อยยี่สิบเอ็ดบาทถ้วน
bathformat(1521.25); // หนึ่งพันห้าร้อยยี่สิบเอ็ดบาทยี่สิบห้าสตางค์
bathformat(1521.1524); // หนึ่งพันห้าร้อยยี่สิบเอ็ดจุดหนึ่งห้าสองสี่
bathformat('1,521.15'); // หนึ่งพันห้าร้อยยี่สิบเอ็ดบาทสิบห้าสตางค์
0SHAREFacebookLINE it!
^