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;
(...)
}