How to get amounts in words in PHP
1 24381
To convert amount in words like one crore or two lakh etc., you have to write the below code for getting the result.
I used this code for online invoice sheet. Hope so it'll also help you in your development.
<?php // Create a function for converting the amount in words function AmountInWords(float $amount) { $amount_after_decimal = round($amount - ($num = floor($amount)), 2) * 100; // Check if there is any number after decimal $amt_hundred = null; $count_length = strlen($num); $x = 0; $string = array(); $change_words = array(0 => '', 1 => 'One', 2 => 'Two', 3 => 'Three', 4 => 'Four', 5 => 'Five', 6 => 'Six', 7 => 'Seven', 8 => 'Eight', 9 => 'Nine', 10 => 'Ten', 11 => 'Eleven', 12 => 'Twelve', 13 => 'Thirteen', 14 => 'Fourteen', 15 => 'Fifteen', 16 => 'Sixteen', 17 => 'Seventeen', 18 => 'Eighteen', 19 => 'Nineteen', 20 => 'Twenty', 30 => 'Thirty', 40 => 'Forty', 50 => 'Fifty', 60 => 'Sixty', 70 => 'Seventy', 80 => 'Eighty', 90 => 'Ninety'); $here_digits = array('', 'Hundred','Thousand','Lakh', 'Crore'); while( $x < $count_length ) { $get_divider = ($x == 2) ? 10 : 100; $amount = floor($num % $get_divider); $num = floor($num / $get_divider); $x += $get_divider == 10 ? 1 : 2; if ($amount) { $add_plural = (($counter = count($string)) && $amount > 9) ? 's' : null; $amt_hundred = ($counter == 1 && $string[0]) ? ' and ' : null; $string [] = ($amount < 21) ? $change_words[$amount].' '. $here_digits[$counter]. $add_plural.' '.$amt_hundred:$change_words[floor($amount / 10) * 10].' '.$change_words[$amount % 10]. ' '.$here_digits[$counter].$add_plural.' '.$amt_hundred; } else $string[] = null; } $implode_to_Rupees = implode('', array_reverse($string)); $get_paise = ($amount_after_decimal > 0) ? "And " . ($change_words[$amount_after_decimal / 10] . " " . $change_words[$amount_after_decimal % 10]) . ' Paise' : ''; return ($implode_to_Rupees ? $implode_to_Rupees . 'Rupees ' : '') . $get_paise; } ?> <!-- call the function here --> <?php $amt_words=485500; // nummeric value in variable $get_amount= AmountInWords($amt_words); echo $get_amount; ?>
Result:
Also check for decimal number here:
<?php $amt_words=855600.45; $get_amount= AmountInWords($amt_words); echo $get_amount; ?>
Result:
As you saw above that it converts the amount in words after decimal also. And also you can change the words in function code as according to your convenience which you want to show in your output.
It is very helpful for online billing and e-commerce websites.
Share:
Fawad Dec 27, 2023
Amazing Code really helpful!