How to convert digits and numbers to words in PHP

How to convert digits and numbers to words in PHP

In the world of PHP programming, there are times when you want numbers to speak a language everyone understands words. This guide will take you through an easy process of how to convert digits and numbers to words in PHP. Let’s explore step-by-step how to add a touch of clarity and simplicity to your numeric displays.

Introduction

We came across such requirements where we need to display a number in words or convert a set of number(s) into a string. This article will show how to convert digits and numbers to words in PHP.

Let’s write some code to convert digits and numbers to words in PHP

Let’s write a function that will take a number as a function parameter. The function will process the input, parse it, and divide it into combinations of units/tens/hundreds, etc. The function will convert digits and numbers to words in PHP. This will compare the combinations and generate words for each number.

How to convert digits and numbers to words in PHP

The implementation in PHP is as follows:

<?php
// function to Convert digits and numbers to words in PHP.
	function convertNumberToString($num){ 
		$decones = array( 
			'01' => "One", 
			'02' => "Two", 
			'03' => "Three", 
			'04' => "Four", 
			'05' => "Five", 
			'06' => "Six", 
			'07' => "Seven", 
			'08' => "Eight", 
			'09' => "Nine", 
			10 => "Ten", 
			11 => "Eleven", 
			12 => "Twelve", 
			13 => "Thirteen", 
			14 => "Fourteen", 
			15 => "Fifteen", 
			16 => "Sixteen", 
			17 => "Seventeen", 
			18 => "Eighteen", 
			19 => "Nineteen" 
	  );

	  $ones = 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" 
	  ); 

	  $tens = array( 
			0 => "",
			2 => "Twenty", 
			3 => "Thirty", 
			4 => "Forty", 
			5 => "Fifty", 
			6 => "Sixty", 
			7 => "Seventy", 
			8 => "Eighty", 
			9 => "Ninety" 
	  ); 

	  $hundreds = array( 
			"Hundred", 
			"Thousand", 
			"Million", 
			"Billion", 
			"Trillion", 
			"Quadrillion" 
	  ); //limit till quadrillion 

	  // format a number upto 2 decimals
		$num = number_format($num,2,".",","); 
		$num_arr = explode(".",$num); 
		$wholenum = $num_arr[0]; 
		$decnum = $num_arr[1]; 
		$whole_arr = array_reverse(explode(",",$wholenum));
		// sorts an associative array in descending order 
		krsort($whole_arr); 
		$rettxt = ""; 

		// iterate through the array
		foreach($whole_arr as $key => $i){ 
			if($i < 20){ 
				$rettxt .= $ones[$i]; 
			}
			elseif($i < 100){ 
				// the substr function returns part of string
				$rettxt .= $tens[substr($i,0,1)]; 
				$rettxt .= " ".$ones[substr($i,1,1)]; 
			}
			else{ 
				$rettxt .= $ones[substr($i,0,1)]." ".$hundreds[0]; 
				$rettxt .= " ".$tens[substr($i,1,1)]; 
				$rettxt .= " ".$ones[substr($i,2,1)]; 
			} 
			if($key > 0){ 
				$rettxt .= " ".$hundreds[$key]." "; 
			} 
	  } 

	  // if float is found, show point
	  if($decnum > 0){ 
			$rettxt .= " point "; 
			if($decnum < 20){ 
				$rettxt .= $decones[$decnum]; 
			}
			elseif($decnum < 100){ 
				$rettxt .= $tens[substr($decnum,0,1)]; 
				$rettxt .= " ".$ones[substr($decnum,1,1)]; 
			}
	  } 
	  return $rettxt;
	}
?>

The above snippet will convert digits and numbers to words in PHP. In this script, we have used several PHP built-in functions that are explained below:

  • number_format()formats a number with grouped thousands and optionally decimal digits.
  • explode() breaks a string into an array.
  • array_reverse()returns a new array with the order of the elements reversed.
  • krsort()sorts an associative array in descending order, according to the key.
  • substr()returns a part of a string.

Usage

The usage of the above function is:

<?php
	echo convertNumberToString('10'); 
	// OUTPUT:  Ten

	echo convertNumberToString('123'); 
	// OUTPUT:  One hundred twenty three
	
	echo convertNumberToString('3467'); 
	// OUTPUT:  Three thousand four hundred sixty seven
?>

The function also supports float numbers:

<?php
	echo convertNumberToString('1.23'); 
	// OUTPUT:  One point twenty three
	
	echo convertNumberToString('34.67'); 
	// OUTPUT:  Thirty four point sixty seven
?>

Limitation

This function has a limit of numbers to Quadrillion. You can customize the function as per your needs.

Testing and Tweaking: Making Sure It Works

Before using this in your actual PHP projects, it’s important to test your number-to-words function thoroughly. Make sure it works accurately and adjust the logic if needed for different situations.

Conclusion: Friendly Numbers in PHP

You’ve successfully made your PHP applications friendlier by adding a tool: convert digits and numbers to words in PHP. This simple tweak makes your numeric values more readable and contributes to a user-friendly interface.

By incorporating number-to-words conversion in your PHP toolkit, you’re not just coding; you’re creating applications that speak a language everyone can understand.

Related Posts