Toon posts:

[PHP] double omzetten naar valuta

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

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];
        }
    }

Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 00:09
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). ;)

Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

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). ;)

Acties:
  • 0 Henk 'm!

Verwijderd

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

Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

  • 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.


Acties:
  • 0 Henk 'm!

  • 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 ]


Acties:
  • 0 Henk 'm!

  • 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