robgar Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 (endret) Hei, jeg prøver å lage en funksjon som konverterer et tall til tusenskille. det vil si: 1000 = 1.000 og 1000000000 = 1.000.000.000 Jeg kom opp med denne idên her: (Feilen ligger øverst en plass, resten virker) <? function tusen_skille($tall) { $lengde = strlen($tall); $skille = "3"; // Feilen ligger her en plass (Under) $i = "0"; while (($skille*$i) <= $lengde) { $punktum=$i; $i++; } $i = "0"; while ($i <= "3") // BEMERK { if (($skille*$punktum+$i) == $lengde) { $not_tall = $i; } $i++; } // Feilen ligger her en plass ^^ (Over) ?> Håper du skjønner min tanke vei, og hvet hva feilen er. På forhånd takk. PS hvet at man kan bruke number_format, men man lærer ikke stort av å bruke alt som er ferdig. EDIT : Tok vekk en del av koden, da den var lang. Endret 12. oktober 2004 av robgar Lenke til kommentar
Gilbert Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 Hvordan vet du at det er en feil? Det er lettere å svare da Lenke til kommentar
Inge_P Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 Hva med en annen kode som funker? <?php $str = '10000000'; $strlength = strlen($str); while ($strlength>=3){ $strlength = $strlength-3; $done = substr($str, $strlength); $str = substr($str, 0, $strlength); $rest .= '.'.$done; } echo $str.$rest; ?> Lenke til kommentar
robgar Skrevet 11. oktober 2004 Forfatter Del Skrevet 11. oktober 2004 Oj, så enkelt lurer på hva jeg har tenkt på.... Lenke til kommentar
???????? Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 Hva med en annen kode som funker? <?php $str = '10000000'; $strlength = strlen($str); while ($strlength>=3){ $strlength = $strlength-3; $done = substr($str, $strlength); $str = substr($str, 0, $strlength); $rest .= '.'.$done; } echo $str.$rest; ?> Den skal desverre ikke fungere, eller? Lenke til kommentar
Torbjørn Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 tja, har vel sett lettere enn det også: <?php $n = rand(1e6,2e9); echo "Først: $n<br/>\n"; echo "Etter: " . number_format($n,0,",",".") . "<br/>\n"; ?> Lenke til kommentar
???????? Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 (endret) PS hvet at man kan bruke number_format, men man lærer ikke stort av å bruke alt som er ferdig. Torbjørn da! Edit: Her har du en løsning som burde fungere: <?php $str = 100200; $a = -1; for($i = strlen($str); $i >= 0; $i--){ if(($a++)%3 == 0 and $a != 1) $tall = ".".$tall; $tall = substr($str, $i, 1).$tall; } echo $tall; ?> Endret 11. oktober 2004 av ???????? Lenke til kommentar
Torbjørn Skrevet 11. oktober 2004 Del Skrevet 11. oktober 2004 argh.. får skylle på at det er sent.. og prøve å komme opp med en regexløsning Lenke til kommentar
Inge_P Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Den skal desverre ikke fungere, eller? joda, testa den ut. ...men din var jo kortere da. Lenke til kommentar
???????? Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 (endret) Den skal desverre ikke fungere, eller? joda, testa den ut. Nope, som sagt - den kan ikke fungere. Prøv å sett inn verdien 500000, da gir den .000.500. Endret 12. oktober 2004 av ???????? Lenke til kommentar
jorgis Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Hva med en regexp-løsning på en linje? Effektivt, men øggli. Lenke til kommentar
Torbjørn Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 hm.. en øggli løsning basert på en revers av tallet går an, men blir noe uelegant Lenke til kommentar
robgar Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Den skal desverre ikke fungere, eller? joda, testa den ut. Nope, som sagt - den kan ikke fungere. Prøv å sett inn verdien 500000, da gir den .000.500. Ja, den virker ikke der nei. Men kan du forklare meg hva dette her betyr : if(($a++)%3 == 0 and $a != 1) Fatter fortsatt ikke hvordan dette deler tallet inn i tusener. Lenke til kommentar
???????? Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 $a != 1 er for å unngår at den starter med . dvs 1.000 blir 1.000. $a++ betyr $a = $a + 1 3%2 betyr resten av 3 delt på 2. Les mer på www.php.net/operators Lenke til kommentar
Inge_P Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Nope, som sagt - den kan ikke fungere. Prøv å sett inn verdien 500000, da gir den .000.500. å pokkern..kanskje jeg forandre noe etter jeg testa da...ja, ja..no biggy. Din funka jo. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå