robgar Skrevet 11. oktober 2004 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
Gilbert Skrevet 11. oktober 2004 Skrevet 11. oktober 2004 Hvordan vet du at det er en feil? Det er lettere å svare da
Inge_P Skrevet 11. oktober 2004 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; ?>
robgar Skrevet 11. oktober 2004 Forfatter Skrevet 11. oktober 2004 Oj, så enkelt lurer på hva jeg har tenkt på....
???????? Skrevet 11. oktober 2004 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?
Torbjørn Skrevet 11. oktober 2004 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"; ?>
???????? Skrevet 11. oktober 2004 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 ????????
Torbjørn Skrevet 11. oktober 2004 Skrevet 11. oktober 2004 argh.. får skylle på at det er sent.. og prøve å komme opp med en regexløsning
Inge_P Skrevet 12. oktober 2004 Skrevet 12. oktober 2004 Den skal desverre ikke fungere, eller? joda, testa den ut. ...men din var jo kortere da.
???????? Skrevet 12. oktober 2004 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 ????????
jorgis Skrevet 12. oktober 2004 Skrevet 12. oktober 2004 Hva med en regexp-løsning på en linje? Effektivt, men øggli.
Torbjørn Skrevet 12. oktober 2004 Skrevet 12. oktober 2004 hm.. en øggli løsning basert på en revers av tallet går an, men blir noe uelegant
robgar Skrevet 12. oktober 2004 Forfatter 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.
???????? Skrevet 12. oktober 2004 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
Inge_P Skrevet 12. oktober 2004 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.
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å