Tutorials

PHP Statements

Uitleg over statements. If, elseif, else, for, while, switch etc. Alles wordt in deze tutorial uitgelegd met voorbeelden...

Pagina 1

Basis statements

Ik deze tutorial ga ik jullie leren wat statements zijn!

Statements laat ons speciale stukken code uitvoeren, indien verschillende condities aangetroffen worden. PHP heeft 3 statements ingebouwd, de eerste is if ..., elseif ..., else, welke ons toelaat om een nummer of expressie uit te voeren uitgaande van hun inhoud.

De if statement

De if statement is 1 van de meest belangrijke opties van (waarschijnlijk) elke programmeer taal. Het laat ons toe om een klein of groot stuk code uit te voeren indien de gespecificeerde condities waar zijn. Als voorbeeld:


<?
// Nederland zal alleen op het beeld verschijnen indien $land NL is
if ($land == 'NL')
echo 'Nederland';
?>

Indien er meer dan 1 line onder de if statement komt, dan gebruiken we accolades. Deze accolades { } vertellen PHP welke code thuis hoort (om het zo maar te noemen) in de if blok.

<?
// Nederland zal alleen op het beeld verschijnen indien $land NL is
if ($land == 'NL')
{
$land_voluit = 'Nederland';
echo $land_voluit;
}
?>
Pagina 2

Boolean waardes

De condities die getest worden (tussen de ( en )) moeten uitkomen op een zogenoemde Boolean waarde, bijvoorbeeld true of false. Als voorbeeld wat 'false' is.

<?
if (5 > 4)
echo 'Dit zal niet getoond worden';

if (false)
echo 'Dit zal niet getoond worden';

if ('0')
echo 'Dit zal niet getoond worden';

if ($g)
echo 'Dit zal niet getoond worden'; // uitgaand dat $g niet gedefineerd is
?>

De true value is gelijk aan alles wat een niet nul of lege string is. Alle voorbeelden hieronder zijn true.

<?
if ('false')
echo "Dit zal getoond worden"; // false is hier gedefineerd als string, als een tekst

if ('00')
echo "Dit zal getoond worden"; // als een string uit 2 nullen bestaat, wordt het niet
// beschouwd als een string

if (0 == 0)
echo 'Dit zal getoond worden'; // 0 is gelijk aan 0, dus de statement is true
?>

Condities in een statement kunnen natuurlijk gecombineerd worden met logical operators, en (&&), of (||) etc. (lees de tutorial over logical operators indien je niet weet wat dit inhoud).

<?
if (((4 < 5) && (3 > 2)) xor (5 == 5))
echo 'Dit zal niet getoond worden'; // beide xor'd condities zijn waar, dus
// zal de uitkomst false zijn
?>

Indien een statement op false uit komt, laat PHP ons de mogelijkheid om een ander stuk code uit te voeren gebruikmakend
van de else statement. Elk uitgevoerde stuk code onder een statement worden 'branch' genoemd en elke branch moet geplaatst
worden tussen barkades, { en } als een branch meer dan 1 regel is.

<?
if ($h < 0)
echo 'Negatief';
else
echo 'Postifief';
?>

Dit checked de waarde van de variabele $h en print negatief als $h minder is dan nul; anders positief. Maar, wat als de waarde nul is: dan is het niet postief, als negatief. De code hierboven zal postief printen, maar hoe laten we het nou nul printen?

PHP levert ook nog de elseif statement om alternatieve condities te checken indien de eerdere if statement op false uitdraaid. Zoveel
elseif statements mogen gebruikt worden nadat 1 if statement gedefineerd is. De else statement laat ons in dit geval iets zien indien de if en elseif statement('s) allemaal niet waar zijn.

<?
if ($h < 0)
echo 'Negatief';
elseif ($h == 0)
echo 'Nul';
else
echo 'Postitief';
?>

Het is mogelijk en zelfs gebruikelijk om compleet verschillende condities te testen gebruikmakend van elseif.

<?
if ($land == 'NL')
// doe iets
elseif ($h > 0)
// doe iets anders
?>

Onthoud wel dat als beide van deze condities true zijn, alleen de eerste branch uitgevoerd wordt. Het is ook gebruikelijk om een geneste if statement in een andere if statement te zetten.

<?
if ($land == "NL")
{
if ($provincie == "fr")
echo 'De provincie Friesland in ';
elseif ($provincie == "gr")
echo 'De provincie Groningen in ';

echo "Nederland";
}
?>

Dit kun je ook anders doen. Het volgende is dus gelijk aan het scriptje hierboven.

<?
if ($land == 'NL' && $provincie == 'fr')
echo 'De provincie Friesland in Nederland';
elseif ($land == 'NL' && $provincie == 'gr')
echo 'De provincie Groningen in Nederland';
?>
Pagina 3

if: en endif:

PHP biedt ook een alternatief aan voor de if statement: if: ... endif;

<?
if ($land == 'NL'):
echo 'NL - ';
echo 'Nederland';
elseif ($land == 'BE'):
echo 'BE - ';
echo 'België';
elseif ($land == 'de'):
echo 'DE - ';
echo 'Duitsland';
else:
echo 'Onbekend - ';
echo 'Land';
endif;
?>

Als je goed hebt gekeken, zul je iets anders zien aan deze if en elseif statements. Ten eerste worden er in dit voorbeeld geen barkades gebruikt en achter elke statement staat een dubbelepunt :. Dit is dus het alternatief voor de if statement en is vooral handig als je stukken HTML, JavaScript of CSS moet coderen in een PHP bestand.

<? if ($land == 'NL'): ?>

<TABLE> 
<TR><TD>Nederland</TD></TR> 
</TABLE> 

<? elseif ($land == 'BE'): ?>

<TABLE> 
<TR><TD>België</TD></TR> 
</TABLE> 

<? endif; ?>


In het voorbeeld hierboven, zal Nederland getoond worden indien $land NL is, en België indien $land BE is.

Ik zal je nu een stukje uitleggen over de switch statement. Stel je voor dat je in een contact formulier of iets dergelijks een <select> tag hebt met daarin 4 landen. Nederland (gedefineerd als nl), België (als be), Duitsland (als de) en Frankrijk (als fr). We kunnen dit laten tonen door de if, elseif statement te gebruiken zoals hier boven.

<?
if ($land == 'nl')
echo 'Nederland';
elseif ($land == 'be')
echo 'België';
elseif ($land == 'de')
echo 'Duitsland';
else
echo 'Frankrijk'; // dit moet Frankrijk zijn omdat er verder
// geen landen gedefineerd waren.
?>
Pagina 4

Switch

In dit voorbeeld ga ik herhalend $land checken, via 1 statement. Dit is mogelijk via de statement switch. Switch wordt vaak gebruikt om een variable te testen op meerdere inhouden.

<?
switch ($land)
{
case 'be':
echo 'België';
break;
case 'de':
echo 'Duitsland';
break;
case 'fr':
echo 'Frankrijk';
break;
default: // moet Nederland zijn
echo 'Nederland';
}
?>

De switch statement inhoud $land, en vergelijkt het dan met elke inhoud van de case clauses. Als er een overeenkomst is gevonden, draait hij de branch onder de case clause totdat hij een break; vindt (ik ga zo wat dieper in op de break;). Als er geen overeenkomst is gevonden tussen $land en een case, dan wordt de default statement uitgevoerd. Deze is optioneel, dus niet verplicht. Indien default niet gespeciviceerd is wordt deze niet uitgevoerd.

Nu even terug op break;. Deze wordt gebruikt om de branch te stoppen. Als $land be is, zal ALLEEN België worden getoond.
Als er geen break; onder staat zal hij doorgaan naar de volgende case en vervolgens zullen Duitsland en Frankrijk ook worden getoond. Dit kan handig wezen, maar ook vervelend. Het hangt er maar net van af waarvoor de code gebruikt moet worden. In ons
voorbeeld, zou dit een bende worden.
Pagina 5

Loops

Het volgende onderdeel is loops.

Programmeren zou erg irritant zijn voor een proffesional als er geen loops waren. Loops zijn bedoeld om een bepaald blok code uit te voeren voor een bepaald aantal keer. PHP heeft 2 verschillende soorten loops. De while loop, en de for loop. Het nummer
voor de loop (hoevaak de loop gedraaid moet worden) is bepaald voordat de eerste loop begint en kan niet veranderd worden.

Ik begin met de while loop. De while loop is de simpelste loop statement. De syntax is vrijwel hetzelfde als een if statement.

<?
while (conditie)
{
// statements
}
?>

Een while loop checked een Boolean conditie. Als de conditie false is, zal de branch tussen de barkades overgeslagen worden. Als de code als true wordt beschouwd zal de code tussen de barkades uitgevoerd worden. Als de loop de } haalt, zal de test conditie
herhaalt worden totdat de conditie een overeenkomst heeft. Onthoud wel dat de conditie alleen getest word aan het begin van elke loop. Dus als de conditie veranderd wordt door de loop, zal de loop zich steeds weer herhalen. We kunnen dit stopzetten door middel van break;.

<?
$i = 11;
while (--$i)
{
if (my_function($i) == 'error')
{
break;
}
$num_bikes++;
}
?>

In dit voorbeeld, als de voorgestelde (niet bestaande) functie my_function geen errors weergeeft, zal de loop 10 keer
draaien en stoppen als $i gelijk is aan 0. (Herinner dat nul gelijk is aan false.) Als my_function wel een error weergeeft, zal de break; statement uitgevoerd worden en de loop tot stop worden gezet. In sommige gevallen willen we dat alleen de huidige loop gestopt wordt, maar niet de hele loop. Voor dit gebruik ik continue:

<?
$i = 11;
while (--$i)
{
if (my_function($i) == 'error')
{
continue; // stop de huidige loop
// skip het optellen van $num_bikes
}
$num_bikes++;
}
?>

Als de bedachte my_function een error weergeeft, zal de loop worden afgekapt door de continue statement. Door 'continue' zal $num_bikes niet worden uitgevoerd.

Net zoals de if statement, biedt while ook een alternatieve syntax met zich mee om blokken met HTML, JavaScript of CSS uit te voeren.

<?
    $i = 0;
    while($i < 5):
?>

<TR><TD><INPUT TYPE='text' NAME='loop'></TD></TR> 

<?
    ++$i;
    endwhile;
?>
Pagina 6

Do..While..Loops

Nu ga ik het hebben over do..while Loops. De do...while Loops zijn gelijk aan de while statement behalve dat de conditie aan het einde wordt getest. Dit betekend dat de loop altijd uitgevoerd wordt op het einde.

<?
echo '<select name="num_parts">';
$i = 0;
do {
echo '<option value="' . $i . '">' . $i . '</option>';
}
while ($i++ < $total_parts); // ik ga er van uit dat $total_parts al geset is
echo '</select>';
?>

Met dit voorbeeld zal nul altijd getoond worden in de <select> element, zelfs als $total_parts gelijk is aan nul.

De while en do ... while statements worden vaak gebruikt om op te tellen, of af te trekken bij een script om te bepalen wanneer te beginnen en wanneer te stoppen zoals in het voorbeeld hierboven. De variabele die gebruikt worden voor dit soort doeleindes, worden vaak 'loop control variables' genoemd. Vaak worden while statements gebruikt om data uit een database te lezen, lijnen uit een bestand, of elementen uit een array.
Pagina 7

For statements

for Loops wat ik nu ga bespreken. De syntax voor deze for loops is iets meer complexer, doch zijn deze for loop meestal gemakkelijker in gebruik dan while loops.

<?
for ($i = 1; $i < 11; ++$i)
{
echo $i . ' <br />'; // print van 1 tot 10
}
?>

De for statement neemt 3 expressies op in zijn parameters, gescheiden door punt-komma (;). De 1e conditie in de syntax ($i = 1;) is netzoals ik hier boven noemde een loop control variable. Deze wordt alleen de eerste keer uitgevoerd, wanneer de for loop uitgevoerd wordt. De 2e conditie in de syntax ($i < 11;) werkt netzoals een Boolean expressie. De loop wordt uitgevoerd als deze true blijkt te zijn en hij stop wanneer deze false is. De 3e conditie in de syntax (++$i) wordt aan het einde van elke loop uitgevoerd. Deze wordt daarom meestal gebruikt om op- of af te tellen.

De moddelste expressie test meestal de loop control variable (de 1e expressie) tegen een tegen gestelde waarde maar dit hoeft niet altijd het geval te zijn. Een loop zoals het volgende voorbeeld, werkt perfect.

<?
for ($i = 1; mijn_functie($i) != 'error'; $i++)
{
// doe iets met $i totdat mijn_functie($i) een error geeft
}
?>

De code voor dit voorbeeld zou ik ook met een while loop kunnen doen, maar met de for loop is het waarschijnlijk makkelijker te volgen dan met de while loop die ik hierboven hebben besproken. Met een while loop zou het er als volgt uit zien:

<?
$i = 1;
while (mijn_functie($i) != 'error')
{
// doe iets met $i totdat mijn_functie($i) een error geeft
$i++;
}
?>

Een feit is dat een for loop niets kan doen want een while loop ook niet kan doen. Maar in de meeste gevallen worden bij 'loop control variables' de for loop gebruikt, gewoonweg omdat de for loop meer structuur en compactheid biedt.

Zoals in andere C-lijkende talen, mag het (maar is niet aanbevolen) om 1 van de 3 expressies leeg te laten.

<?
for ( ; ; )
{
if (mijn_functie() == 'stop') break;
}
?>

Als de Boolean expressie leeg is gelaten, is het standaard true. Dit zou kunnen eindigen in een oneindige loop als break, return of exit niet gebruikt worden. Er is zelfzaam een logische reden om for loop expressies leeg te laten. De code hierboven zou beter geschreven kunnen worden als:

<?
while (mijn_functie() != 'stop')
{
// doe iets
}
?>

De alternatieve syntax voor de for statement, als sommige wel zullen verwachten, gelijk aan de if en while statements:

<?
for (expressie1; expressie2; expressie3):
//statements
endfor;
?>

Als voorbeeld:


<?
    for ($i = 0; $i <= 5; ++$i):
?>

<TR><TD><INPUT TYPE=text></TD></TR> 

<?
    endfor;
?>


Dit was de tutorial over statements. Ik hoop dat je er wat van geleerd hebt!

Reacties

0
Nog geen reacties.