Write Thousand and One Milles in PHP number [duplicate]

0

Good,

I have the numbers for example:

10
1.000
10.000
1.000.000
10.000.000

I need an echo to return it:

10
1 mil
10 mil
1 milhão
10 milhões

I have found and am trying to adapt a function.

<?php
    echo valorPorExtenso(508600);

    function valorPorExtenso($valor)
    {


        $rt='';
        $singular = array("", "", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
        $plural = array("", "", "mil", "milhões", "bilhões", "trilhões","quatrilhões");

        $c = array("", "100", "200", "300", "400","500", "600", "700", "800", "900");
        $d = array("", "10", "20", "30", "40", "50","60", "70", "80", "90");
        $d10 = array("10", "11", "12", "13", "14", "15","16", "17", "18", "19");
        $u = array("", "1", "2", "3", "4", "5", "6","7", "8", "9");

        $z=0;

        $valor = number_format($valor, 2, ".", ".");
        $inteiro = explode(".", $valor);
        for($i=0;$i<count($inteiro);$i++)
            for($ii=strlen($inteiro[$i]);$ii<3;$ii++)
                $inteiro[$i] = "0".$inteiro[$i];

        // $fim identifica onde que deve se dar junção de centenas por "e" ou por ","                     
asked by anonymous 30.12.2015 / 20:17

1 answer

4
  

If it is not for currency values, this has already been posted here:
How to convert float number to full number in PHP?


Function ready for financial values:

Source: link


Example Usage:

echo valorPorExtenso( 23789.37 );

Result

vinte e três mil, setecentos e oitenta e nove reais e trinta e sete centavos

The code is this:

function valorPorExtenso($valor=0) {
    $singular = array("centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
    $plural = array("centavos", "reais", "mil", "milhões", "bilhões", "trilhões","quatrilhões");

    $c = array("", "cem", "duzentos", "trezentos", "quatrocentos","quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
    $d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta","sessenta", "setenta", "oitenta", "noventa");
    $d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze","dezesseis", "dezesete", "dezoito", "dezenove");
    $u = array("", "um", "dois", "três", "quatro", "cinco", "seis","sete", "oito", "nove");

    $z=0;

    $valor = number_format($valor, 2, ".", ".");
    $inteiro = explode(".", $valor);
    for($i=0;$i<count($inteiro);$i++)
        for($ii=strlen($inteiro[$i]);$ii<3;$ii++)
            $inteiro[$i] = "0".$inteiro[$i];

    // $fim identifica onde que deve se dar junção de centenas por "e" ou por ","                                     
30.12.2015 / 20:20