Toon posts:

[PHP] double omzetten naar valuta

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Met de code hieronder krijg ik steeds nog een 0 achter het getal als ik een getal onvoer met 2 cijfers achter de komma en dat komt omdat count maar 1 teken telt i.p.v. 2 ? :? HOE KAN DIT NOU ? en hoe kan ik dit oplossen


code:
1
2
3
4
5
6
7
8
9
10
11
12
    function curcon($double) {
        $cur = explode(".", $double);
        if (count($cur[1]) == 0) {
            echo $cur[0].",".$cur[1]."00";
        }
        if (count($cur[1]) == 1) {
            echo $cur[0].",".$cur[1]."0";
        }
        if (count($cur[1]) == 2) {
            echo $cur[0].",".$cur[1];
        }
    }

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
function curcon($double) {
  return number_format($double, 2, ',');
}

Lang leve de manual. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 08:28
NMe84 schreef op 01 oktober 2004 @ 23:38:
PHP:
1
2
3
function curcon($double) {
  return number_format($double, 2, ',');
}

Lang leve de manual. :P
:)

Op zich is het erg logisch dat count($cur[1]) een 1 retourneert. Probeer eens count($cur). ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als je er dan toch al fouten uit gaat halen, dan haal ik de rest van de minpuntjes even uit. ;)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function curcon($double) {
    $cur = explode(".", $double);
    if ((count($cur) == 1) && (strlen($cur[1]) >= 2)) {
        return $cur[0].",".substr($cur[1], 0, 2);
    }
    if ((count($cur) == 1) && (strlen($cur[1]) == 1)) {
        return $cur[0].",".$cur[1]."0";
    }
    if (count($cur) == 0) {
        return $cur[0].",00";
    }
    if (count($cur) > 2) {
        return false;
    }
}
  • Volgorde van de if statements aangepast. Scheelt een beetje performance, omdat de bovenste if vaker voor zal komen dan de tweede, en die vaker dan de derde, enz.
  • Return gebruikt in plaats van echo. Een functie wat laten echo-en is niet echt handig, je kan dat beter door de aanroepende functie laten doen, dus uiteindelijk:
    PHP:
    1
    
    echo curcon(2.3);
  • Een vierde if-statement ingebouwd, die ervoor zorgt dat er false terugegeven wordt wanneer er teveel punten in je getal staan. Wel zo handig. :P
Maar kijk liever naar number_format(), zoals ik in mijn eerste post in dit topic al aangaf. :)

[ Voor 7% gewijzigd door NMe op 02-10-2004 01:24 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
sylvesterrr schreef op 02 oktober 2004 @ 00:23:
[...]


:)

Op zich is het erg logisch dat count($cur[1]) een 1 retourneert. Probeer eens count($cur). ;)

Verwijderd

Topicstarter
oops
is count dan alleen voor het tellen van arrays en niet voor het tellen van de hoeveelheid tekens binnen een string??

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 02 oktober 2004 @ 01:21:
oops
is count dan alleen voor het tellen van arrays en niet voor het tellen van de hoeveelheid tekens binnen een string??
strlen(). :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Als je er dan toch al fouten uit gaat halen, dan haal ik de andere rest van de minpuntjes even uit. :P
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function curcon($double) {
    $cur = explode(".", $double);
                $cur_count = count($cur) ;
    if (($cur_count == 1) && (strlen($cur[1]) >= 2)) {
        return $cur[0] . "," . substr($cur[1], 0, 2);
    }
    if (($cur_count == 1) && (strlen($cur[1]) == 1)) {
        return $cur[0] . "," . $cur[1]."0";
    }
    if ($cur_count == 0) {
        return $cur[0].",00";
    }
    if ($cur_count > 2) {
        return false;
    }
}

Count is nogal heavy, dus het is beter hem niet in loops te zetten (zoals: for($i = 1 ; $i < count($bla) ; $i++)) of meerdere keren aan te roepen. Een keer will do nicely. :)

[ Voor 13% gewijzigd door Cavorka op 02-10-2004 09:28 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

NMe84 schreef op 02 oktober 2004 @ 00:58:
Als je er dan toch al fouten uit gaat halen, dan haal ik de rest van de minpuntjes even uit. ;)
PHP:
1
 ...

[list]• Volgorde van de if statements aangepast. Scheelt een beetje performance, omdat de bovenste if vaker voor zal komen dan de tweede, en die vaker dan de derde, enz.

[...]
Ik snap niet dat de volgorde van de if statements wat uitmaakt qua performance. Hij gaat ze sowieso allemaal langs. Anders wordt het natuurlijk in het geval van een if-else constructie.

Edit: o nee, bij return is het exit functie O-)

[ Voor 5% gewijzigd door X-Lars op 02-10-2004 16:32 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

X-Lars schreef op 02 oktober 2004 @ 16:30:
Ik snap niet dat de volgorde van de if statements wat uitmaakt qua performance. Hij gaat ze sowieso allemaal langs. Anders wordt het natuurlijk in het geval van een if-else constructie.

Edit: o nee, bij return is het exit functie O-)
Juist, en anders had ik er elseifs van gemaakt. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1