Gå til innhold

Funksjon for å lage input til byte


Gjest Slettet+6132

Anbefalte innlegg

Gjest Slettet+6132

God kveld/natt/morgen ( :sleep: )

 

Sitter da her og kjeder meg, og så er det en liten funksjon som jeg ikke får helt til slik jeg vil.

 

function makebyte($input) {
 $split = split(" ", $input);
 
 $size = $split[0];
 $prefix = $split[1];

 if ($prefix == "kB") {
   $bytes = $size * 1024;
 }
 if ($prefix == "MB") {
   $bytes = $size * 1024 * 1024;
 }
 if ($prefix == "GB") {
   $bytes = $size * 1024 * 1024 * 1024;
 }
 else {
   $bytes = "0";
 }
 return $bytes;
}

 

Bruksmåten er simpel, makebyte("45 GB");, men noe fungerer ikke som jeg har lyst. Hvis jeg bruker enkel "=" på if så hopper den tin GB uansett, hvis jeg bruker doble så returnerer den 0. Noen som orker å hjelpe en trøtt stakkar? ;)

Endret av Slettet+6132
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+6132
Hva er problemet med den? Den fungerer bra den.

Har du virkelig testa den? Den funker kun om prefix er "GB", og da gir den et feil tall.

 

<?

$test = makebyte("34 MB");

echo "$test";

?>

 

Gir ut 0. Så noe må være galt :p

Endret av Slettet+6132
Lenke til kommentar
Gjest Slettet+6132
Okay... svarte vist litt for tidlig i dag.

Feilen din er at du bruker if hele veien og ikke elseif.

 

Det betyr at 

 

if ($prefix == "GB") {

  $bytes = $size * 1024 * 1024 * 1024;

}

else {

  $bytes = "0";

 

else her er else uansett hva annet enn GB det er.

Men hvis jeg fjerner else så går den rett til GB uansett :no:

 

Edit: har prøvd med elseif også

Endret av Slettet+6132
Lenke til kommentar

function makebyte($input) {

$split = split(" ", $input);

 

$size = $split[0];

$prefix = $split[1];

 

echo $prefix;

 

if ($prefix == "kB") {

$bytes = $size * 1024;

}

elseif ($prefix == "MB") {

$bytes = $size * 1024 * 1024;

}

elseif ($prefix == "GB") {

$bytes = $size * 1024 * 1024 * 1024;

}

else {

$bytes = "0";

}

return $bytes;

}

 

echo makebyte("34 MB");

 

 

 

Se: http://no2.php.net/manual/en/control-structures.elseif.php

Endret av ????????
Lenke til kommentar

Hva er problemet, her gir det scriptet:

 

echo makebyte("20 KB")."\n";

echo makebyte("20 MB")."\n";

echo makebyte("20 GB")."\n";

echo makebyte("20")."\n";

 

KB20480

MB20971520

GB21474836480

0

 

Jeg ser at du hadde skrevet liten b i KB (kB). Annet enn det så stemmer alle verdiene.

Lenke til kommentar
Gjest Slettet+6132
Hva er problemet, her gir det scriptet:

 

echo makebyte("20 KB")."\n";

echo makebyte("20 MB")."\n";

echo makebyte("20 GB")."\n";

echo makebyte("20")."\n";

 

KB20480

MB20971520

GB21474836480

0

 

Jeg ser at du hadde skrevet liten b i KB (kB). Annet enn det så stemmer alle verdiene.

Her også, men hvis du prøver med desimaltall blir det plutselig feil :(

 

EDIT: Ser problemet, US standard bruker punktum på komma, og komma for å skille tusener. Nå funka det, takk :)

 

EDIT: Slik blir funksjonen nå:

function makebyte($input) {
 $split = split(" ", $input);

 $size = $split[0];
 $size = str_replace(",", ".", $size);
 $prefix = $split[1];

 if ($prefix == "kB") {
   $bytes = $size * 1024;
 }
 elseif ($prefix == "MB") {
   $bytes = $size * 1024 * 1024;
 }
 elseif ($prefix == "GB") {
   $bytes = $size * 1024 * 1024 * 1024;
 }
 else {
   $bytes = "0";
 }
 return $bytes;
}

Endret av Slettet+6132
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...