En introduktion till PHP - del 3
Förord
Då är det alltså dags för tredje delen i min serie om PHP. Den här gången ska vi gå igenom if-satser, loopar och switch.Innehåll
»»
»
»
If-satser
'Syntax för en enkel if-sats.
if (villkor)
sats;
?>
Om man ska utföra flera satser inom en if-sats så använder man sig av block-paranteser för att innesluta dessa satser.
Om "villkor" visar sig vara sant så utförs satserna. Om det visar sig vara falskt så hoppas dom över.
Följande exempel skulle skriva ut "a är större än b" om a visar sig vara större än b.
if ($a > $b)
echo "a är större än b";
?>
Ofta vill man utföra fler än en sats om villkoret är sant. Självklart behöver du inte göra en if-sats för varje sats du vill exekvera. Det du gör då är att innesluta satserna som skall köras med blockparanteser "{" och "}". Följande exempel skulle första skriva ut "a är mindre än b" och sedan sätta värde i $a till $b om $a är mindre än $b.
if ($a < $b) {
echo "a är mindre än b";
$b = $a;
}
?>
If-satser kan nästlas inom varandra hur många gånger som hellst. Villkoret kan också vara hur långt som hellst. Följande exempel skriver ut värdet på $a om $a är större än $b och $a är större än 10 och $c är större än 100.
if ($a > $b)
if ($a > 10)
if ($c > 100)
echo "A = " . $a;
//Alternativt:
if ($a > $b && $a > 10 && $c > 100)
echo "A = " . $a;
?>
Ofta vill man utföra andra kommandon om villkoret i if-satsen skulle vara falskt. Då använder man sig av ordet else. Följande exempel skriver ut "a är större än b" om $a är större än $b, skulle det inte vara fallet skriver den istället ut "a är INTE större än b".
if ($a > $b) {
echo "a är större än b";
} else {
echo "a är INTE större än b";
}
?>
Om vi studerar exemplet ovan så ser vi att texten "a är INTE större än b" kommer att skrivas ut om $a är mindre än $b och om $a är likamed $b. Vill vi nu att texten "a är likamed b" ska skrivas ut om detta är fallet kan man använda sig av elseif.
if ($a > $b) {
echo "a är större än b";
} elseif ($a < $b) {
echo "a är mindre än b";
} else {
echo "a är likamed b";
}
?>
Det finns också ett alternativt skrivsätt för if-satserna. Då använder man sig av ett kolon ":" istället för block-paranteserna och avsluta hela if-satsen med endif;. Följande exempel fungerar likadant som exemplet ovan.
if ($a > $b):
echo "a är större än b";
elseif ($a < $b):
echo "a är mindre än b";
else:
echo "a är likamed b";
endif;
?>
Loopar
Det finns i huvudsak tre olika loop funktioner i PHP. Dessa är while, do...while och for loopar. While och for looparna kontrollerar först om ett villkor stämmer och sedan körs kommandona inom loopen. Do...while loopen kör först kommandona och sedan kontrolleras villkoret, är villkoret sant så körs loopen igen.
//Syntax för while-loop.
while (villkor) {
sats1;
sats2;
...
}
//Syntax för do...while-loop.
do {
sats1;
sats2;
...
} while (villkor);
//Syntax för for-loop.
for (expr1;expr2;expr3) {
sats1;
sats2;
...
}
?>
Villkoren här är precis som i if-satserna ett uttryck som antingen kan vara sant eller falskt.
Expr1 i for-loopen utförs endast (och alltid) en gång och används oftast som en initiering av en variabel som används som räknare för loopen. I början av varje iteration (runda i loopen) kontrolleras expr2 (villkor), om det är sant körs loopen igen, om inte så stannar loopen. Efter varje iteration så utförs expr3. Alla dom tre uttrycken kan lämnas tomma. Om expr2 lämnas tom så kommer loopen gå i alla evighet om inte kommandot break; utförs inne i loopen. Några exempel på loopar som alla skriver ut texten "0 1 2 3 4 5 6 7 8 9":
$i = 0;
while ($i < 10) {
echo $i . " ";
$i++; //Öka värdet i $i med 1.
}
$i = 0;
do {
echo $i . " ";
$i++;
} while ($i < 10);
for ($i = 0; $i < 10; $i++) {
echo $i . " ";
}
for ($i = 0;;$i++) {
echo $i . " ";
if ($i == 9)
break;
}
?>
Switch
Swith liknar till stor del if-satsen. Den används främst när du har en variabel som kan anta olika värden, och du vill utföra en eller flera satser för varje värde. Följande två exempel är två olika sätt att göra samma sak på. Den första använder if-satser och den andra använder sig utav switch.
if ($i == 1)
echo "i är likamed 1";
if ($i == 2)
echo "i är likamed 2";
if ($i == 3)
echo "i är likamed 3";
switch ($i) {
case 1:
echo "i är likamed 1";
break;
case 2:
echo "i är likamed 2";
break;
case 3:
echo "i är likamed 3";
break;
}
?>
Det är viktigt att första hur switch-satsen exekveras för att undvika misstag. Så fort PHP kommer till en case-sats som stämmer så börjar det exekvera satser och det fortsätter att göra det tills slutet av switch blocket. Därför är det viktigt att använda break, som stoppar PHP från att exekvera mer delar av blocket. Låt oss ta ett exempel på detta:
switch ($i) {
case 1:
echo "i är likamed 1";
case 2:
echo "i är likamed 2";
case 3:
echo "i är likamed 3";
}
?>
Om $i är 1 i detta fall så kommer alla echo satser att exekveras. Dvs. att denna text kommer skrivas ut: "i är likamed 1i är likamed 2i är likamed 3". Skulle $i vara 2 skulle denna text skrivas ut: "i är likamed 2i är likamed 3". Endast om $i är 3 kommer det att bli det väntade resultatet, nämligen endast: "i är likamed 3". Därför är det viktigt att komma ihåg att använda break; när man vill ha det.
Det finns också ett specielt case som utförs endast om alla andra case-satser inte stämde. Det är default-satsen och ska alltid ligga sist i switch blocket. Ett exempel:
switch ($i) {
case 1:
echo "i är likamed 1";
break;
case 2:
echo "i är likamed 2";
break;
case 3:
echo "i är likamed 3";
break;
default:
echo "i är inte 1, 2 eller 3";
}
?>
Avslutningsvis
Det var allt jag hade för den här gången. Kom gärna med förslag på vad jag ska ta upp i nästa del och skicka gärna klagomål, förslag på förbättringar, synpunkter, kommentarer, ja allt möjligt som har med det här att göra till mig så att jag kan få kurserna att blir bättre. Rösta gärna här uppe till höger också./Jonas Lundqvist
0 Kommentarer