PHP-lessen - les 8-2 - De switch-operator
In de vorige les hebben we kennisgemaakt met de if-operator. De if-operator stelt ons in staat om een voorwaarde te controleren en, afhankelijk van het resultaat van die controle, de gewenste acties uit te voeren.
Laten we ons nu voorstellen dat we tien controles moeten uitvoeren en afhankelijk van het resultaat een van de tien acties moeten uitvoeren. Natuurlijk kunnen we dit schrijven met behulp van meerdere if-instructies:
<?php if($x == 1){ // acties } if($x == 2){ // acties } if($x == 3){ // acties } if($x == 4){ // acties } if($x == 5){ // acties } if($x == 6){ // acties } if($x == 7){ // acties } if($x == 8){ // acties } if($x == 9){ // acties } if($x == 10){ // acties } ?>
Deze manier werkt, maar het is beter om zulke controles te schrijven met behulp van de switch-operator.
PHP switch
De switch-operator maakt het mogelijk om de waarde van een expressie onder meerdere voorwaarden te testen. Laten we het bovenstaande voorbeeld herschrijven met switch:
<?php switch ($x){ case 1: // acties break; case 2: // acties break; case 3: // acties break; case 4: // acties break; case 5: // acties break; case 6: // acties break; case 7: // acties break; case 8: // acties break; case 9: // acties break; case 10: // acties break; default: // acties als geen enkele andere case overeenkomt } ?>
Zoals ik eerder zei, werken beide voorbeelden op dezelfde manier. In het geval van switch hebben we echter de default-sectie toegevoegd, die wordt uitgevoerd als de waarde van $x
niet tussen 1 en 10 ligt.
Laten we de structuur van de switch-instructie bekijken. Eerst komt het sleutelwoord switch
, gevolgd door haakjes met de expressie die we willen controleren. Deze expressie kan zowel een getal als een tekenreeks zijn, bijvoorbeeld:
<?php switch ($x){ case 'Hello': break; case 'Bye': break; } ?>
Na het opgegeven expressieblok volgen de accolades waarin we mogelijke waarden (cases) en bijbehorende acties opsommen:
<?php switch ($x){ case 'Hello': // mogelijke waarde print $x; // actie break; // einde van de case case 2: $x++; break; } ?>
Elke mogelijke waarde wordt gedefinieerd met case
, gevolgd door de waarde (tussen aanhalingstekens voor tekst, zonder aanhalingstekens voor cijfers) en een dubbele punt. Daarna schrijven we de uit te voeren acties. Aan het einde van elke case gebruiken we break;
om de uitvoering van de switch te stoppen.
Na alle case
-blokken kunnen we default
gebruiken. Dit gedeelte wordt uitgevoerd als geen enkele andere case overeenkomt of als we vergeten zijn een break;
te plaatsen en de switch verdergaat. Hieruit volgen twee belangrijke regels:
1. Vergeet niet om break;
te plaatsen aan het einde van elke case.
2. Voor default
is break;
niet verplicht, omdat het het laatste controlepunt is.
Hieronder zie je een stroomdiagram van de switch-operator:
Als voorbeeld kunnen we zeggen dat dit diagram laat zien hoe we het aantal dagen van de week kunnen bepalen op basis van het aantal dagen sinds maandag.
<?php // $D is het aantal dagen sinds maandag $x = $D % 7; switch ($x){ case 1: print 'maandag'; break; case 2: print 'dinsdag'; break; case 3: print 'woensdag'; break; case 4: print 'donderdag'; break; case 5: print 'vrijdag'; break; case 6: print 'zaterdag'; break; case 7: print 'zondag'; break; } ?>