title: How to convert decimal number to words (money format) using PHP?
body: <p>I just need a little help here. Because I am creating a code for converting decimals to Money format in words. For example if </p>
  
  <p><em>I have this number</em> </p>
  
  <p><strong>'2143.45'</strong> </p>
  
  <p><em>the output should be</em> </p>
  
  <p><strong>'two thousand one hundred forty three and forty-five cents'</strong></p>
  
  <p>I found a code like this but I don't have an idea how to include cents.</p>
  
  <pre><code>&lt;?php
  
  function convertNumber($number)
  {
      list($integer, $fraction) = explode(".", (string) $number);
  
      $output = "";
  
      if ($integer{0} == "-")
      {
          $output = "negative ";
          $integer    = ltrim($integer, "-");
      }
      else if ($integer{0} == "+")
      {
          $output = "positive ";
          $integer    = ltrim($integer, "+");
      }
  
      if ($integer{0} == "0")
      {
          $output .= "zero";
      }
      else
      {
          $integer = str_pad($integer, 36, "0", STR_PAD_LEFT);
          $group   = rtrim(chunk_split($integer, 3, " "), " ");
          $groups  = explode(" ", $group);
  
          $groups2 = array();
          foreach ($groups as $g)
          {
              $groups2[] = convertThreeDigit($g{0}, $g{1}, $g{2});
          }
  
          for ($z = 0; $z &lt; count($groups2); $z++)
          {
              if ($groups2[$z] != "")
              {
                  $output .= $groups2[$z] . convertGroup(11 - $z) . (
                          $z &lt; 11
                          &amp;&amp; !array_search('', array_slice($groups2, $z + 1, -1))
                          &amp;&amp; $groups2[11] != ''
                          &amp;&amp; $groups[11]{0} == '0'
                              ? " and "
                              : ", "
                      );
              }
          }
  
          $output = rtrim($output, ", ");
      }
  
      if ($fraction &gt; 0)
      {
          $output .= " point";
          for ($i = 0; $i &lt; strlen($fraction); $i++)
          {
              $output .= " " . convertDigit($fraction{$i});
          }
      }
  
      return $output;
  }
  
  function convertGroup($index)
  {
      switch ($index)
      {
          case 11:
              return " decillion";
          case 10:
              return " nonillion";
          case 9:
              return " octillion";
          case 8:
              return " septillion";
          case 7:
              return " sextillion";
          case 6:
              return " quintrillion";
          case 5:
              return " quadrillion";
          case 4:
              return " trillion";
          case 3:
              return " billion";
          case 2:
              return " million";
          case 1:
              return " thousand";
          case 0:
              return "";
      }
  }
  
  function convertThreeDigit($digit1, $digit2, $digit3)
  {
      $buffer = "";
  
      if ($digit1 == "0" &amp;&amp; $digit2 == "0" &amp;&amp; $digit3 == "0")
      {
          return "";
      }
  
      if ($digit1 != "0")
      {
          $buffer .= convertDigit($digit1) . " hundred";
          if ($digit2 != "0" || $digit3 != "0")
          {
              $buffer .= " and ";
          }
      }
  
      if ($digit2 != "0")
      {
          $buffer .= convertTwoDigit($digit2, $digit3);
      }
      else if ($digit3 != "0")
      {
          $buffer .= convertDigit($digit3);
      }
  
      return $buffer;
  }
  
  function convertTwoDigit($digit1, $digit2)
  {
      if ($digit2 == "0")
      {
          switch ($digit1)
          {
              case "1":
                  return "ten";
              case "2":
                  return "twenty";
              case "3":
                  return "thirty";
              case "4":
                  return "forty";
              case "5":
                  return "fifty";
              case "6":
                  return "sixty";
              case "7":
                  return "seventy";
              case "8":
                  return "eighty";
              case "9":
                  return "ninety";
          }
      } else if ($digit1 == "1")
      {
          switch ($digit2)
          {
              case "1":
                  return "eleven";
              case "2":
                  return "twelve";
              case "3":
                  return "thirteen";
              case "4":
                  return "fourteen";
              case "5":
                  return "fifteen";
              case "6":
                  return "sixteen";
              case "7":
                  return "seventeen";
              case "8":
                  return "eighteen";
              case "9":
                  return "nineteen";
          }
      } else
      {
          $temp = convertDigit($digit2);
          switch ($digit1)
          {
              case "2":
                  return "twenty-$temp";
              case "3":
                  return "thirty-$temp";
              case "4":
                  return "forty-$temp";
              case "5":
                  return "fifty-$temp";
              case "6":
                  return "sixty-$temp";
              case "7":
                  return "seventy-$temp";
              case "8":
                  return "eighty-$temp";
              case "9":
                  return "ninety-$temp";
          }
      }
  }
  
  function convertDigit($digit)
  {
      switch ($digit)
      {
          case "0":
              return "zero";
          case "1":
              return "one";
          case "2":
              return "two";
          case "3":
              return "three";
          case "4":
              return "four";
          case "5":
              return "five";
          case "6":
              return "six";
          case "7":
              return "seven";
          case "8":
              return "eight";
          case "9":
              return "nine";
      }
  }
  
   $num = 500254.89;
   $test = convertNumber($num);
  
   echo $test;
  
  ?&gt;
  </code></pre>