23. april 2006 - 14:38
Der er
20 kommentarer og 1 løsning
Problem med array og 0'er
Jeg har et array med nogle nøgler: $maaned = array(01 => "januar", 02 => "februar", 03 => "marts", 04 => "april", 05 => "maj", 06 => "juni", 07 => "juli", 08 => "august", 09 => "september", 10 => "oktober", 11 => "november", 12 => "december" ); Men hvis jeg vil udskrive alle værdierne i arrayet, kan jeg jo ikke bare sige: for ($x = 0; $x < count($maaned); $x++) { echo $maaned[$x]; echo "<br>"; } For så ville jeg jo ikke få 0'et med i alle tal under 10... Jeg har prøvet med følgende: for ($x = 0; $x < 20; $x++) { if (strlen($x) < 2) { echo $maaned[0$x]; echo "<br>"; } else { echo $maaned[$x]; echo "<br>"; } } Men det lader ikke til at virke... Er der nogen der har en løsning?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
23. april 2006 - 14:44
#1
Du kan rbuge str_pad til at få 0'er: str_pad($maaned[$x], 2, '0', STR_PAD_LEFT);
23. april 2006 - 14:46
#2
Du skal ikke sætte 0 foran: $maaned = array(1 => "januar", 2 => "februar", 3 => "marts", 4 => "april", 5 => "maj", 6 => "juni", 7 => "juli", 8 => "august", 9 => "september", 10 => "oktober", 11 => "november", 12 => "december" ); og nu kan du bruge en forløkke fra 1 til 12: for ($i=1;$i<=12;$i++) print $maaned[$i];
23. april 2006 - 14:57
#3
<?php $maaned = array(01 => "januar", 02 => "februar", 03 => "marts", 04 => "april", 05 => "maj", 06 => "juni", 07 => "juli", 08 => "august", 09 => "september", 10 => "oktober", 11 => "november", 12 => "december" ); for ($x = 0; $x < 20; $x++) { str_pad($maaned[$x], 2, '0', STR_PAD_LEFT); echo "<br>"; } ?> Ser ikke ud til at virke... Jeg vil helst undgå at bruge erikjacobsens løsning, da jeg har en masse db udtræk som afhænger lidt af de 0ller
23. april 2006 - 15:14
#4
Hvad så med : <?php $maaned = array(01 => "januar", 02 => "februar", 03 => "marts", 04 => "april", 05 => "maj", 06 => "juni", 07 => "juli", 08 => "august", 09 => "september", 10 => "oktober", 11 => "november", 12 => "december" ); foreach ($maaned as $key => $value) { echo $value; echo "<br>"; } ?>
23. april 2006 - 15:19
#5
Det var lige det jeg søgte :D - du må gerne lægge et svar, duejensen :D
23. april 2006 - 15:20
#6
En simpel men effektiv løsning
23. april 2006 - 15:21
#7
Nemlig ;)
23. april 2006 - 15:52
#8
duejensens forslag synes nu at mangle lidt. Hvor er august? Prøv som jeg skriver.
23. april 2006 - 16:04
#9
hmm, det var jo interessant. Nå, men da venchil har en begrundelse, med en masse db udtræk med nuller, er behovet måske i virkeligheden: $maaned = array("01" => "januar", "02" => "februar", "03" => "marts", "04" => "april", "05" => "maj", "06" => "juni", "07" => "juli", "08" => "august", "09" => "september", "10" => "oktober", "11" => "november", "12" => "december" ); foreach ($maaned as $key => $value) { echo $value; echo "<br>"; }
23. april 2006 - 16:06
#10
Ja, og det kan være han ikke har brug for 0-erne alligevel. Men med ".." omkring så er august da med igen.
23. april 2006 - 16:12
#11
Ja... Hvor er august egentlig?
23. april 2006 - 16:12
#12
Og at august forsvinder, har følgende forklaring: Når man skriver et heltal med et 0 foran, (01, 02, 03, 04, 05, osv), angiver man at tallet skal opfattes oktalt. Det går godt op til og med 07, men 08 er ikke et lovligt oktalt tal - det bliver konverteret til 0 09 er heller ikke et lovligt oktalt tal, det bliver også konverteret til 0. Ergo har både "august" og "september" samme key, og september overskriver så august.
23. april 2006 - 16:13
#13
OK, hvordan fixer jeg så dette?
23. april 2006 - 16:16
#14
Hvis du absolut skal bruge 01 i stedet for 1, 02 i stedet for 2, er det vel fordi du skal sammenligne med "01", "02", "03" etc ? Ergo, må du benytte "01" => "januar", "02" => " "februar" etc, og så løser det problemet.
23. april 2006 - 16:17
#15
Du har fået 2 forslag nu, venchil. Skal du have mere vejledning så må du fortælle hvorfor du mener du skal have "0" foran.
23. april 2006 - 17:07
#16
duejensen: $maaned = array(01 => "januar", 02 => "februar", 03 => "marts", 04 => "april", 05 => "maj", 06 => "juni", 07 => "juli", 08 => "august" 09 => "september", 10 => "oktober", 11 => "november", 12 => "december" ); Skal laves om til? erikjacobsen: Jeg trækker ud fra min mysql database: $getnews = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) AS tid FROM nyheder WHERE MONTH(tid) = '" . $tid[0] . "' AND YEAR(tid) = '" . $tid[1] . "'") or die("MySQL-fejl: ".mysql_error()); Måske kunne man lave en if (strlen($tid[0]) < 2) { $getnews = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) AS tid FROM nyheder WHERE MONTH(tid) = '" . 0$tid[0] . "' AND YEAR(tid) = '" . $tid[1] . "'") or die("MySQL-fejl: ".mysql_error()); } ???
23. april 2006 - 17:19
#17
Ja, du skal enten lave om til: $maaned = array("01" => "januar", "02" => "februar", "03" => "marts", "04" => "april", "05" => "maj", "06" => "juni", "07" => "juli", "08" => "august" "09" => "september", "10" => "oktober", "11" => "november", "12" => "december" ); altså sætte ".." omkring de to cifre, eller også må du fjerne de foranstillede nuller, Din sql ovenfor viser at du bruger MONTH(...) fra mysql - mig bekendt giver den nummeriske månedsnumre - uden foranstillede 0'er Bruger du DATE_FORMAT("%m", tid) får du strenge (med foranstillede numre).
23. april 2006 - 17:20
#18
Jeg går over til ikke at skrive 0 foran... Men kan min strlen() ting så bruges?
23. april 2006 - 17:30
#19
Nej din strlen konstruktion kan ikke bruges. fjerner du nullerne foran kan du stadig bruge foreach ($maaned as $key => $value) { echo $value; echo "<br>"; } eller du kan bruge erikjacobsens løsning: for ($i=1;$i<=12;$i++) print $maaned[$i] . "<br>";
23. april 2006 - 18:58
#20
Hvad er dit tid-felt for en type. Det virker omstændeligt at lave det om til unix_timestamp.
Vi tilbyder markedets bedste kurser inden for webudvikling