Programmeren in PHP/Beslissingsstructuren
Uit Wikibooks
Inhoud |
[bewerk] Keuzes
Soms moet je keuzes maken, op basis van bijvoorbeeld gebruikersinvoer, of je wilt kijken of variabele een bepaalde waarde hebben.
[bewerk] If/elseif/else statements
Een if statement (en bijbehorende elseif en else statements) zijn de meest voorkomende statements om te kijken of er aan een bepaalde conditie is voldaan. Zo kan je bijvoorbeeld kijken of een getal hoger of lager is dan een ander getal. Zie de volgende tabel
| Operator | Betekenis |
| > | Groter dan |
| < | Kleiner dan |
| == | Gelijk aan |
| != | Niet gelijk aan |
| !== | Niet gelijk aan (met typecontrole) |
| === | Gelijk aan (met typecontrole) |
| >= | Gelijk aan, of groter dan |
| <= | Gelijk aan, of kleiner dan |
Deze operators zijn op de volgende manier te gebruiken
PHP-code:
<?php //Omdat de naam van de variabele voor het voorbeeld niet belangrijk is, gebruik ik foute namen. $a = 4; $b = 2; //Kijk of $a gelijk is aan $b if ($a == $b) { echo $a . ' is gelijk aan ' . $b . '!'; } //Als $a niet gelijk is aan $b, kijk of $a misschien hoger is dan $b elseif ($a > $b) { echo $a . ' is groter dan ' . $b; } //Als $a niet hoger is dan $b EN niet hetzelfde is als $b moet $a wel kleiner zijn dan $b else { echo $a . ' is kleiner dan ' . $b; } ?>
Onder de condities valt dus $a == $b en $a > $b in dit voorbeeld. Tip: probeer de waardes van $a en $b ook eens aan te passen, zodat je de effecten van de condities kan zien.
Typecontrole hierboven in de tabel geeft aan dat niet alleen de inhoud van de twee vergeleken variabelen van belang is, maar ook het type. In PHP heeft bijvoorbeeld de constante FALSE de waarde 0 en TRUE de waarde 1. Zou je dan dit doen:
PHP-code:
if(TRUE==1) { echo "JA"; } else { echo "NEE"; }
Dan zou er "JA" uitkomen. Doe je het echter met de operatoren die letten op de types van de variabelen, dan komt er "NEE" uit:
PHP-code:
if(TRUE===1) { echo "JA"; } else { echo "NEE"; }
[bewerk] Switch-statement
Als je voor maar een variabele hoeft te kijken aan welke waarde hij/zij voldoet kun je met if en elseif's gaan werken, maar dit levert meestal rommelige code op, die meestal wat moeilijker te volgen is. Daar is het switch-statement voor.
PHP-code:
<?php //Weer een foute variabele naam. $a = 9; // Voorbeeld om switch werking aan te geven. switch ($a) { case 1: echo $a . ' is gelijk aan 1'; break; case 2: echo $a . ' is gelijk aan 2'; break; case 9: echo $a . ' is gelijk aan 9'; break; default: echo $a . 'is niet gelijk aan 1, 2 of 9'; } ?>
Zoals je ziet wordt een switch-statement vaak gebruikt om te kijken of een variabele gelijk is aan een waarde. Je kan ook condities gebruiken in de case statements maar het is beter om dat te voorkomen en in zo'n geval een if - else if - else constructie te gebruiken.
Let er ook op dat je telkens als je klaar bent in een 'case' dat je dan een break; neerzet om te voorkomen dat er door wordt gegaan met de volgende 'case'. Bij een "default" hoeft over het algemeen geen "break", omdat deze toch als laatste staat.
Door slim om te gaan met je gebruikte break statements en een kleine codeaanpassing kan je de bovenstaande switch statement ook als volgt implementeren:
PHP-code:
<?php $a = 9; switch ($a) { case 1: case 2: case 9: echo $a . ' is gelijk aan '. $a; break; default: echo $a . ' is niet gelijk aan 1, 2 of 9'; } ?>
[bewerk] De als-dan expressie
De als-dan expressie is een iets moeilijker leesbare versie van het normale if-statement, deze wordt meestal gebruikt om snel verschillende waarden aan een variabele toe te kennen, een voorbeeld hiervan is:
PHP-code:
<?php $a = 1; $b = $a == 1 ? $a . ' is gelijk aan 1' : $a . ' is niet gelijk aan 1'; echo $b; ?>
Hier staat dus hetzelfde als
PHP-code:
<?php $a = 1; if ($a == 1) { $b = "$a is gelijk aan 1"; } else { $b = "$a is niet gelijk aan 1"; } echo $b; ?>
[bewerk] Herhalingen
Herhalingen (meestal lussen genoemd, of in het Engels "loops", ook soms iteraties) worden gebruikt om een stuk PHP code meerdere keren uit te voeren (te herhalen). Er zijn verschillende soorten lussen.
[bewerk] De for-lus
Bij de for-lus loopt er een teller mee, die bijhoudt hoe vaak de lus doorlopen is. In de simpelste vorm ziet deze er zo uit:
PHP-code:
<?php for ($i = 0; $i < 5; $i++) { echo $i; } ?>
Dit betekent dus eigenlijk:
1. Geef variable "$i" de waarde 0. 2. Als $i kleiner is dan 5 voer stap 3 uit, anders stap 5 3. echo de waarde van $i 4. Tel 1 bij de waarde van $i ($i++) en ga naar stap 2. 5. Ga verder na de sluitende accolade }.
Een for-lus bestaat uit drie statements, het eerste statement wordt gebruikt om een waarde aan de teller toe te kennen, deze teller heeft meestal de naam $i. In het tweede statement wordt gekeken of $i kleiner is dan 5, is dat niet zo dan is de lus klaar en gaat PHP door met het volgende stuk code. Het derde en laatste statement is het telstatement dat vaak gebruik maakt van increment en decrement statements.
In veel situaties wordt het tweede statement gebruikt om te controleren of $i kleiner is dan de grootte van een array.
PHP-code:
<?php // fout gebruik for lus $arr = array(1,2,3,4,5); for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; } ?>
In bovenstaand voorbeeld wordt iedere keer wanneer de lus uitgevoerd wordt het aantal elementen in de array $arr geteld. Het is beter om slechts 1 keer te bepalen hoeveel elementen de array $arr bevat en dat kan op meerdere manieren.
PHP-code:
<?php // mogelijkheid 1: $arr = array(1,2,3,4,5); $cnt = count($arr); for ($i = 0; $i < $cnt; ++$i) { echo $arr[$i]; } // mogelijkheid 2: $arr = array(1,2,3,4,5); for ($i = 0, $cnt = count($arr); $i < $cnt; ++$i) { echo $arr[$i]; } ?>
Zoals je ziet kan een statement in een for lus meerdere handelingen bevatten mits ze gescheiden zijn door komma's. Het eerste statement wordt slechts 1 keer uitgevoerd. statement 2 en 3 worden elke lus doorloop uitgevoerd.
[bewerk] De while-lus
De while-lus gaat door zolang er aan een bepaalde conditie is voldaan, er loopt bij een while-lus geen teller mee. Als er niet aan een die conditie is voldaan doet de while-lus niets.
PHP-code:
<?php $a = 0; while ($a < 5) { $a++; echo $a; } ?>
Dit voorbeeld doet hetzelfde als bij de for-lus, maar dan omslachtiger. (voor dit voorbeeld kun je dus beter een for-lus gebruiken, maar deze loop is heel belangrijk bij databases.)
[bewerk] De do-while lus
De do-while-lus, of do-lus doet is bijna hetzelfde als de while-lus behalve dat de code in de do loop altijd een keer wordt uitgevoerd. Dit komt doordat de conditie pas aan het einde van het doorlopen van de loop wordt gecontroleerd.
PHP-code:
<?php $a = 0; do { $a++; echo $a; } while ($a < 5); ?>
vergelijk de resultaten van de do loop maar eens met de resultaten van de while loop.
[bewerk] De foreach loop
Met de foreach loop kun je de array's (lijsten) doorlopen zonder dat je de sleutel weet.
PHP-code:
<?php $Lijst = array ("aap","Banaan","sleutelbos"); foreach ($Lijst as $Waarde) { echo $Waarde; } ?>
Dit is de simpelste vorm van een foreach loop, je hebt ook nog een vorm waarbij je ook de sleutel kan achterhalen.
PHP-code:
<?php $Lijst = array ( "item" => "winkeltas", "prijs" => "12 euro 50", "Leeftijd" => 15 ); foreach ($Lijst as $Sleutel => $Waarde) { echo $Sleutel . " is: " . $Waarde . " <br /> "; } ?>
| De wijzigingen aan deze pagina van voor 15 april 2007 vallen alléén onder de GFDL, en niet onder de CC-BY-SA-licentie. U kunt de inhoud van deze pagina dan ook alleen onder de voorwaarden van de GFDL (her)gebruiken. Niet alle bijdragers van voor 15 april 2007 hebben hun werk vrijgegeven onder de dubbellicentie GFDL&CC-BY-SA. Kijk hier voor meer informatie. |

