Guide: PHP- & MySQL-innføring: Kapittel 3

Kontrollering av verdier

Det er nok en gang klart for et nytt kapittel i vår PHP-guide. Nå ser vi på hvordan vi kan utføre ulike handlinger basert på betingelser.

Switch

Hvis vi har en rekke else if-kontrolleringer kan det lønne seg å bytte til switch. Det er lettere å forklare dette med et skikkelig eksempel. Som det sies, et bilde sier mere enn tusen ord. Bare at i dette tilfellet er det et par kodeksempler.

if ($dag == 1) { echo "Mandag"; }

else if ($dag == 2) { echo "Tirsdag"; }

else if ($dag == 3) { echo "Onsdag"; }

else if ($dag == 4) { echo "Torsdag"; }

else if ($dag == 5) { echo "Fredag"; }

else if ($dag == 6) { echo "Lørdag"; }

else if ($dag == 7) { echo "Søndag"; }

(Du ser sikkert at jeg har kuttet vekk noen linjeskift. Dette er gjort for å spare plass, og som du lærte i kapittel 2 bryr ikke PHP seg om linjeskift.) Som vi ser skriver dette skriptet ut navnet på ukedagen, avhengig av hvilket nummer det er (for å få dette skriptet til å fungere måtte selvsagt variabelen dag vært definert). Dette kan gjøres på en bedre, og i manges øyne, lettere måte med switch.

switch($dag)
{
  case 1:
     echo "Mandag";
     break;
  case 2:
     echo "Tirsdag";
     break;
  case 3:
     echo "Onsdag";
     break;
  case 4:
     echo "Torsdag";
     break;
  case 5:
     echo "Fredag";
     break;
  case 6:
     echo "Lørdag";
     break;
  case 7:
     echo "Søndag";
     break;
}

Denne kodebiten gjør nøyaktig det samme som vårt tidligere eksempel. Lett, ikke sant? Det er imidlertid én viktig ting du må huske på når du benytter switch - du må alltid avslutte kommandoene med break;. Hvis du glemmer å gjøre dette, og dag er satt til for eksempel 5, vil kommandoen(e) i case 5, case 6 og case 7 bli utført.


Switch med strenger

Switch kan selvsagt brukes i andre tilfeller enn der variablen(e) vi bruker er heltall. La oss se på hvordan det gjøres med strenger (strings), altså tekst.

switch ($mat)
{
  case "ostekake":
    echo "Jeg vil også ha ostekake!";
    break;
  case "lasagne":
    echo "Lasagne, du. Du er den typen altså.";
    break;
  case "pizza":
    echo "Pizza hadde virkelig gjort seg nå.";
    break;
}

Avhengig av hva variabelen mat er satt til, så vil den respektive teksten bli vist.

Men hvordan kan man få til else i en switch-kontrollering? Dette gjøres ved hjelp av default. Hvis ingen av uttrykkene i switch viser seg å være sanne, vil visse funksjoner bli utført, altså akkurat som ved bruk av else.

default trengs ikke å avsluttes med break, men må plasseres til slutt.

switch ($foo)
{
  case "bar":
    echo "Foobar! Let's dance!";
    break;
  case "foobar":
    echo "Fubar! Itt' no dansing for deg.";
    break;
  default:
    echo "Denne teksten vil bli vist hvis \$foo ikke er definert.";
}

(Teit eksempel, men du forstår nok meningen.)

Man kan selvsagt også utføre tester med logiske operatører ved bruk av switch.

switch (TRUE)
{
  case $foo == $bar:
    echo "Hurra, hurra!";
    break;
(...)
}