อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

Patipat
PHP Super Hero Member
PHP Super Hero Member
Posts: 996
Joined: 10/06/2019 10:12 am

อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by Patipat » 02/07/2019 10:52 am

ผมเขียน Function แปลงภาษาจากตัวเลขเป็นภาษาไทยแต่ว่า ในบางตัวเลขก็ใช้ได้ ปกติ บางตัวเลขก็ยังมี เออเร่อ พอจะทราบไหมครับว่า มันเป็นที่อะไรครับ

ภาพแรก ยังเออเร่ออยู่แต่ว่า ค่าอ่านได้ปกติ
Selection_999(122).png
Selection_999(122).png (66.71 KiB) Viewed 275 times
ภาพที่สอง อ่านได้ไม่เออเร่อครับ
Selection_999(123).png
Selection_999(123).png (12.74 KiB) Viewed 275 times
ภาพที่3 โค๊ดบรรทัดที่เออเร่อ
Selection_999(124).png
Selection_999(124).png (92.5 KiB) Viewed 275 times
ส่วนนี้จะเป็นโค้ด Function ทั้งหมดครับ

Code: Select all

<?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 > 0) { // ทศนิยมมากกว่า 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 .= 'เอ็ด';}
          else if($i==($strlen-2) AND $n==2){$result .= 'ยี่';}
          else if($i==($strlen-2) AND $n==1){$result .= '';}
          else{ $result .= $numberstr[$n];}
         $result .= $digitstr[$strlen-$i-1];
        }
      }
      $result .= 'สตางค์';
    }
  }
  return $result;
}
?>
If you fall, let you stand. :)

thatsawan
PHP VIP Members
PHP VIP Members
Posts: 19916
Joined: 31/03/2014 10:02 am
Contact:

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by thatsawan » 02/07/2019 10:55 am

echo ตัวแปล บรรทัด 221 มาเช็ค มีค่าจริงป่าว
เช็คไล่ย้อนขึ้นไป

Patipat
PHP Super Hero Member
PHP Super Hero Member
Posts: 996
Joined: 10/06/2019 10:12 am

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by Patipat » 02/07/2019 11:04 am

thatsawan wrote:echo ตัวแปล บรรทัด 221 มาเช็ค มีค่าจริงป่าว
เช็คไล่ย้อนขึ้นไป

ค่าเป็น 0 จริงด้วยครับ
Selection_999(125).png
Selection_999(125).png (57.68 KiB) Viewed 269 times
If you fall, let you stand. :)

User avatar
tsukasaz
PHP VIP Members
PHP VIP Members
Posts: 10571
Joined: 18/04/2012 9:39 am

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by tsukasaz » 02/07/2019 11:05 am

ตอนเรียกใช้ function ชื่อ bathformat เรียกใช้ยังไงครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

Patipat
PHP Super Hero Member
PHP Super Hero Member
Posts: 996
Joined: 10/06/2019 10:12 am

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by Patipat » 02/07/2019 11:08 am

เรียกแสดงแบบนี้ครับ
1 แสดงเป็นภาษาไทย
2 แสดงเป็นภาษาอังกฤษครับ
Selection_999(127).png
Selection_999(127).png (24.29 KiB) Viewed 267 times
If you fall, let you stand. :)

User avatar
tsukasaz
PHP VIP Members
PHP VIP Members
Posts: 10571
Joined: 18/04/2012 9:39 am

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by tsukasaz » 02/07/2019 11:11 am

ปรับโค้ดหน่อยครับ

จาก

Code: Select all

 // จุดทศนิยม
  $strlen = strlen($number[1]);
  if ($strlen > 0) { // ทศนิยมมากกว่า 2 ตำแหน่ง คืนค่าเป็นตัวเลข
    $result .= 'จุด';
    for($i=0;$i<$strlen;$i++) {
      $result .= $numberstr[(int)$number[1][$i]];
    }
  } else { // คืนค่าเป็นจำนวนเงิน (บาท)  
เป็น

Code: Select all

// จุดทศนิยม
    $check_decimal = isset($number[1]) ? (int) $number[1] : 0 ;
    if ($check_decimal)
    { // ทศนิยมมากกว่า 2 ตำแหน่ง คืนค่าเป็นตัวเลข
        $strlen = strlen($number[1]);
        $result .= 'จุด';
        for ($i = 0; $i < $strlen; $i++)
        {
            $result .= $numberstr[(int) $number[1][$i]];
        }
    }else { // คืนค่าเป็นจำนวนเงิน (บาท)  

เวลาเรียกใช้ให้ใส่แบบนี้ bathformat(number_format(2033000.00, 2, '.', ','));
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

Patipat
PHP Super Hero Member
PHP Super Hero Member
Posts: 996
Joined: 10/06/2019 10:12 am

Re: อยากทราบว่า Error ที่อะไรครับผม Function แปลงตัวเลขเป็นคำอ่านภาษาไทย PHP

Post by Patipat » 02/07/2019 11:16 am

ได้แล้วครับผม ขอบคุณมากๆครับ :-o :-D :-D
Selection_999(129).png
Selection_999(129).png (14.19 KiB) Viewed 266 times
If you fall, let you stand. :)

Post Reply

Return to “Programming - PHP”

Users browsing this forum: Bing [Bot], Google Adsense [Bot] and 20 guests