Soms wil je in je code bepaalde taken alleen uitvoeren in bepaalde situaties en anders niet. Hiervoor kun je zogenaamde if-statements gebruiken, waarmee je voorwaardelijk bepaalde taken kunt laten uitvoeren.
If-statements zijn in PHP (en in veel andere programmeertalen) van cruciaal belang omdat ze de basis vormen voor het maken van beslissingen in een programma. Met if-statements kan een programma bepaalde acties uitvoeren op basis van voorwaarden die waar of onwaar zijn.
Een aantal belangrijke redenen waarom if-statements van belang zijn in PHP:
Met een if-statement kun je een bepaald stuk code alleen dan uit laten voeren in bepaalde situaties en anders niet.
if ( voorwaarde ) {
...
}
Hierin is de voorwaarde in veel gevallen een vergelijking tussen twee variabelen of een variabele en specifieke waarde. Het kan ook het resultaat van een functie of iedere andere expressie zijn, die als waar of onwaar kan worden beoordeeld.
Alle code tussen de accolades wordt alleen uitgevoerd wanneer de voorwaarde waar is. Wanneer voorwaarde niet waar is gaat de code verder na de sluit-accolade.
<?php
if ($aantal <= 0) {
?>
<p class="error">Het aantal moet een positief getal zijn.</p>
<?php
}
?>
In dit voorbeeld wordt de waarde van de variabele aantal vergeleken met 0. Alleen wanneer de variabele aantal kleiner of gelijk aan 0 is, wordt de paragraaf met de foutmelding weergegeven.
Vaak wil je bepaalde code alleen uitvoeren als aan een bepaalde voorwaarde is voldaan, en een andere code als niet aan de voorwaarde is voldaan.
Hiervoor is er het else-statement. Het else-statement breidt een if-statement uit om bepaalde code uit te voeren in het geval dat de voorwaarde niet waar is.
if ( voorwaarde ) {
...
} else {
...
}
Alle code tussen de eerste set accolades wordt alleen uitgevoerd wanneer de voorwaarde waar is. Anders wordt juist alleen de code tussen de tweede set accolades uitgevoerd.
<?php
if ($a > $b) {
$verschil = $a - $b;
} else {
$verschil = $b - $a;
}
?>
In dit voorbeeld wordt de positieve waarde voor het verschil tussen de getallen a en b berekend. Als a groter is dan b wordt het verschil gelijk aan a min b en anders b min a.
Het elseif-statement is, zoals de naam al doet vermoeden, een combinatie van if en else. Net als het else-statement breidt het een if-statement uit om een andere code uit te voeren in het geval dat de voorwaarde bij if niet waar is. In tegenstelling tot het else-statement zal de alternatieve code alleen worden uitgevoerd als de voorwaarde bij het elseif-statement waar is.
if ( voorwaarde1 ) {
...
} elseif ( voorwaarde2 ) {
...
} elseif ( voorwaarde3 ) {
...
} else {
...
}
Alle code tussen de eerste set accolades wordt alleen uitgevoerd wanneer voorwaarde1 waar is. Als voorwaarde1 niet waar is wordt naar voorwaarde2 gekenen. Wanneer deze waar is wordt alle code tussen de tweede set accolades uitgevoerd. Wanneer ook voorwaarde1 niet waar is, wordt naar voorwaarde3 gekenen. Alleen wanneer alle voorwaarden niet waar zijn wordt de code tussen de accolades die horen bij het else-statement uitgevoerd.
Het aantal elsif-statements is onbeperkt. Je kunt zoveel alternatieve voorwaarden opgeven als je nodig hebt. Iedere alternatieve voorwaarde wordt echter alleen beoordeeld, wanneer alle voorgaande voorwaarden niet waar zijn.
Het else-statement mag hierbij ook weggelaten worden. Als je het wel gebruikt, moet het uiteraard als allerlaatste komen te staan. De code hierbij wordt dan alleen uitgevoerd, wanneer alle voorwaarden niet waar zijn.
<?php
if ($a > $b) {
$verhouding = "groter dan";
} elseif ($a < $b) {
$verhouding = "kleiner dan";
} else {
$verhouding = "gelijk aan";
}
?>
<div>Getal a is <?= $verhouding ?> getal b.</div>
In dit voorbeeld worden getallen a en b met elkaar vergeleken en de verhouding tussen deze twee (groter dan, kleiner dan of gelijk aan) weergegeven.
In plaats van het else-statement had hier ook nog een elseif-statement met de voorwaarde $a == $b gebruikt kunnen worden. Wanneer zowel de eerste als tweede voorwaarde niet waar zijn, kan het echter niet anders dan dat beide getallen gelijk aan elkaar zijn, dus else is in dit geval voldoende.
Een switch-statement is vergelijkbaar met een reeks if- of elseif-statements met steeds verschillende waardes voor steeds dezelfde variabele. Soms wil je misschien dezelfde variabele (of expressie) vergelijken met veel verschillende waarden, en een ander stuk code uitvoeren, afhankelijk van de waarde waaraan het gelijk is. Dit is precies waar het switch-statement voor is.
switch ( variabele ) {
case waarde1:
...
break;
case waarde2:
...
break;
case waarde3:
...
break;
case default:
...
}
Hierbij wordt de variabele met een aantal waarden vergeleken (waarde1, waarde2, waarde3). De code die volgt na een waarde wordt alleen uitgevoerd wanneer de variabele gelijk is aan die betreffende waarde.
De default-case (case default) werkt als een else-statement. De code die hierna volgt wordt uitgevoerd, wanneer de variabele aan geen van de voorgaande waarden gelijk is. Deze case mag ook worden weggelaten.
Merk op dat aan het eind van de code na iedere case een break-statement staat. Wanneer deze wordt weggelaten, wordt ook de code bij de volgende waarde uitgevoerd en dat is in de meeste gevallen natuurlijk niet de bedoeling.
<?php
$som = "{$x} &{$operator}; {$y}";
switch ($operator) {
case 'plus':
$uitkomst = $x + $y;
break;
case 'minus':
$uitkomst = $x - $y;
break;
case 'times':
$uitkomst = $x * $y;
break;
case 'divide':
$uitkomst = $x / $y;
break;
case 'power':
$som = "{$x}<sup>{$y}</sup>";
$uitkomst = $x ** $y;
break;
}
?>
<div><?= $som ?> = <?= $uitkomst ?></div>
In dit voorbeeld wordt de variabele operator vergeleken met een aantal verschillende waardes (plus, minus etc.). Afhankelijk van de waarde van de variabele operator wordt er een andere berekening uitgevoerd met de variabelen x en y.