Gå til innhold

Hvordan lager man en "function" av "switch"?


Anbefalte innlegg

Hei!

Søkte litt på dette med forsto lite.

Altså, jeg har en kode som ser slik ut:

switch ($mon) {
case 1:
echo "Januar";
break;
case 2:
echo "Februar";
break;
case 3:
echo "Mars";
break;
case 4:
echo "April";
break;
case 5:
echo "Mai";
break;
case 6:
echo "Juni";
break;
case 7:
echo "Juli";
break;
case 8:
echo "August";
break;
case 9:
echo "September";
break;
case 10:
echo "Oktober";
break;
case 11:
echo "November";
break;
case 12:
echo "Desember";
break;
}

Jeg kjører dette scriptet opptil 4-5 ganger i et script og syns da at scriptet blir unødvendig stort. Har lært meg litt om "functions", men ikke nok til å lage en slik funksjon som gjør at jeg kan kjøre samme scriptet flere ganger i ett script, og funksjonen bare er definert en gang.

Er jo ikke krise men hadde jo vært veldig kjekt å lært :)

Lenke til kommentar
Videoannonse
Annonse

hvis jeg forstår deg riktig, vil du lage en function, gjerne i ei annen fil og includere den, for å så hente frem når du behøver den?

 

noe sånt: ? ??

 

function month() {
$mon=date(n);
switch ($mon) {
case 1:
echo "Januar";
break;
case 2:
echo "Februar";
break;
case 3:
echo "Mars";
break;
case 4:
echo "April";
break;
case 5:
echo "Mai";
break;
case 6:
echo "Juni";
break;
case 7:
echo "Juli";
break;
case 8:
echo "August";
break;
case 9:
echo "September";
break;
case 10:
echo "Oktober";
break;
case 11:
echo "November";
break;
case 12:
echo "Desember";
break;
}

}

Lenke til kommentar

nja, det er nesten ihvertfall, men den skal ikke sjekke hvilken måned det er nå,

den skal sjekke det ut ifra en gitt tid.

Kan egentlig vise hele scriptet jeg har laget som skal regne ut den datoen.

For scriptet ditt funka desverre ikke :(

Scriptet:

$today = getdate($msg_date);
$mday=$today[mday];
$mon=$today[mon];
$year=$today[year];
$hours=$today[hours];
$minutes=$today[minutes];
echo "<div style=\"width:250px;float:left;\"><p class=\"pm2\">Motatt: $hours:$minutes $mday ";

switch ($mon) {
case 1:
echo "Januar";
break;
case 2:
echo "Februar";
break;
case 3:
echo "Mars";
break;
case 4:
echo "April";
break;
case 5:
echo "Mai";
break;
case 6:
echo "Juni";
break;
case 7:
echo "Juli";
break;
case 8:
echo "August";
break;
case 9:
echo "September";
break;
case 10:
echo "Oktober";
break;
case 11:
echo "November";
break;
case 12:
echo "Desember";
break;
}
echo ",  $year</p></div>";

$msg_date er "tiden siden unix epoken" hentet utifra en database.

Lenke til kommentar

function getMonthName($month) {
     switch ($month) {
     case 1:
          return "Januar";
     ...
}

...
echo getMonthName($mon);

 

Edit: Men ????? sin versjon er nok bedre. Du kan jo teste denne hvis du vil lære deg funksjoner.

Endret av RottePostei
Lenke til kommentar

RottePostei sin funka bra den!

Takk skal du ha :thumbup:

 

Skjønte lite av ???????? sin fordi jeg er ikke så veldig skilled :blush:

 

edit: kanskje man skulle se litt på den, kan den legges i en egen fil og?

Endret av LoS
Lenke til kommentar

Så lenge du den ikke skal gjøre noe mer avansert enn det så bude du bruke en array. Du kan legge den i en annen side, for månedene blir lagret i variabelen.

 

Den fungerer veldig lett, du legger inn månedene i en array:

$måned = array(

1 => "Januar",

2 => "Februar",

3 => "Mars",

4 => "April"...

);

 

Siden en array starter på 0 setter vi den første verdien til 1, (1=>), man slipper å gjøre det for alle variablene - men da ser du letter hvordan funksjonen fungerer.

 

echo $måned[1];

gir da outputen Januar

 

echo $måned[2]

gir outputen Februar

 

Arrays er ofte så viktig at det er bedre å lære seg å bruke før du lærer å bruke functions.

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

Ok, i under min ville utprøving (:p) fikk jeg fram denne:

$måned = array(1 >= "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember");
echo $måned[date("n", mktime(0,0,0,$mon,0,0))];

Det står ihvertfall april nå da, bare håpe det er riktig da :dontgetit:

Lenke til kommentar

Når du har gitt måneden så slipper du å bruke mktime(),

bruk:

 

CODE

$måned = array(1 => "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember");

echo $måned[$mon];

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

hmm, prøv å lag samme script som jeg visste ovenfor hvor du fjerner $msg_date fra getdate(), så skal du vel finne det ut.

Har satt opp egen server og konfigurasjonen er en del annerledes fra de fleste andre.

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...