-
Notifications
You must be signed in to change notification settings - Fork 9
/
conversion.php
66 lines (62 loc) · 3.06 KB
/
conversion.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
// Adapted from a buggy script original written by vgurudev at nikshepa dot com
// You can find the original script at: http://php.net/manual/en/function.number-format.php
function convertNumberToWordsForIndia($number){
//A function to convert numbers into Indian readable words with Cores, Lakhs and Thousands.
$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' => 'fouteen','15' => 'fifteen',
'16' => 'sixteen','17' => 'seventeen','18' => 'eighteen','19' => 'nineteen','20' => 'twenty',
'30' => 'thirty','40' => 'fourty','50' => 'fifty','60' => 'sixty','70' => 'seventy',
'80' => 'eighty','90' => 'ninty');
//First find the length of the number
$number_length = strlen($number);
//Initialize an empty array
$number_array = array(0,0,0,0,0,0,0,0,0);
$received_number_array = array();
//Store all received numbers into an array
for($i=0;$i<$number_length;$i++){
$received_number_array[$i] = substr($number,$i,1);
}
//Populate the empty array with the numbers received - most critical operation
for($i=9-$number_length,$j=0;$i<9;$i++,$j++){
$number_array[$i] = $received_number_array[$j];
}
$number_to_words_string = "";
//Finding out whether it is teen ? and then multiply by 10, example 17 is seventeen, so if 1 is preceeded with 7 multiply 1 by 10 and add 7 to it.
for($i=0,$j=1;$i<9;$i++,$j++){
//"01,23,45,6,78"
//"00,10,06,7,42"
//"00,01,90,0,00"
if($i==0 || $i==2 || $i==4 || $i==7){
if($number_array[$j]==0 || $number_array[$i] == "1"){
$number_array[$j] = intval($number_array[$i])*10+$number_array[$j];
$number_array[$i] = 0;
}
}
}
$value = "";
for($i=0;$i<9;$i++){
if($i==0 || $i==2 || $i==4 || $i==7){
$value = $number_array[$i]*10;
}
else{
$value = $number_array[$i];
}
if($value!=0) { $number_to_words_string.= $words["$value"]." "; }
if($i==1 && $value!=0){ $number_to_words_string.= "Crores "; }
if($i==3 && $value!=0){ $number_to_words_string.= "Lakhs "; }
if($i==5 && $value!=0){ $number_to_words_string.= "Thousand "; }
if($i==6 && $value!=0){ $number_to_words_string.= "Hundred & "; }
}
if($number_length>9){ $number_to_words_string = "Sorry This does not support more than 99 Crores"; }
return ucwords(strtolower("".$number_to_words_string)." Only.");
}
// echo "\n========= 907654321 ========";
// echo convertNumberToWordsForIndia("907654321");
// echo "\n========= 1000742 ========";
// echo convertNumberToWordsForIndia("1000742");
// echo "\n=============== 190000 ========";
// echo convertNumberToWordsForIndia("190000");
?>