25. november 2002 - 22:22
Der er
11 kommentarer og 1 løsning
LIdt hjælp til sprintf
Hey alle.. nogen som lige kan hjælpe mig engang ? jeg skal ha lavet en tid om til 01:39 hvis den skal vise 39 minutter... men lige nu med nedestående kode skriver den 1h39m hvordan får jeg den til at skrive 01:39 istedet for ? $time%=3600; $playtime=$playtime.sprintf("%2dm",$time/60); // $time%=60; // $playtime=$playtime.sprintf("%02ds",$time); $data=substr($data,5); return $playtime;
Annonceindlæg fra Partnertekst
25. november 2002 - 22:41
#1
Prøv at fortælle, hvad dit input til funktionen er (Jeg går udfra ovenstående er en halv funktion, da du bruger return)
25. november 2002 - 22:50
#2
function getnextplaytime(&$data) { $decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24); $binnumber=base_convert($decnumber,10,2); while (strlen($binnumber) < 32) $binnumber="0".$binnumber; $exp=abs(base_convert(substr($binnumber,1,8),2,10))-127; if (substr($binnumber,0,1)=="1") $exp=0-$exp; $man=1;$manadd=0.5; for ($counter=9;$counter<32;$counter++) { if (substr($binnumber,$counter,1)=="1") $man+=$manadd; $manadd=$manadd/2; } $time=round(pow(2,$exp)*$man); $playtime=""; if ($time>3600) { $playtime=sprintf("%2dh",$time/3600); } $time%=3600; $playtime=$playtime.sprintf("%02dm",$time/60); $data=substr($data,5); return $playtime; } det er sådan det hele ser ud lige i det... og lige som den ser ud nu skriver den 1h39m og den skal kun skrive 01:39 hvordan får jeg den til det ?
25. november 2002 - 23:06
#3
Jeg spørger lige igen - hvad er dit input til funktionen?
25. november 2002 - 23:09
#4
Jeg går udfra den får "tid" i et eller andet nærmere defineret format? Ydermere: Er det eneste ønskede output bare tiden i formatet "hh:mm" ?
25. november 2002 - 23:12
#5
den henter RAW data fra en cs server... og det ser ret sort ud... men du skal vel kun bruge den linje med den sprintf kommando ?
25. november 2002 - 23:13
#6
ja..
25. november 2002 - 23:13
#7
altså det henter bare en masse sort kode ud som jeg ikke er helt klar over. men har fået at vide at jeg bare skal rette i den linje...
25. november 2002 - 23:20
#8
Prøv at give mig nogle eksempler på de inputs den kan få - så kan jeg se om jeg ser en logik i de data og de efterfølgende operationer! Når jeg ikke kender input, kan jeg heller ikke give noget kode som serverer output i et bestemt format - fordi det afhænger jo selvfølgelig af input! (Og så ser det kraftigt ud som om ovenstående kode kan simplificeres væsentligt!)
25. november 2002 - 23:20
#9
Jeg vil vide, hvad indholdet af $data er!
25. november 2002 - 23:38
#10
Prøv med: $playtime=sprintf('%02d:%02d',(int) ($time/3600), (int) (($time%3600)/60)); $data=substr($data,5); return $playtime;
25. november 2002 - 23:39
#11
eller bare: $data=substr($data,5); return sprintf('%02d:%02d',(int) ($time/3600), (int) (($time%3600)/60)); i stedet for: $playtime=""; if ($time>3600) { $playtime=sprintf("%2dh",$time/3600); } $time%=3600; $playtime=$playtime.sprintf("%02dm",$time/60); $data=substr($data,5); return $playtime;
25. november 2002 - 23:54
#12
På samme måde, som de 8 linier kunne kortes ned til 2 har jeg på fornemmelsen, at det andet også kan kortes ned...
Vi tilbyder markedets bedste kurser inden for webudvikling