Lussen en Condities

Software moet aan de lopende band beslissingen nemen. Uiteraard geldt dit ook voor webapplicaties. Mag deze mevrouw naar binnen? Is alles ingevuld? Heeft hij op 'Verzenden' geklikt?

if () {} - if () {} else {}

Na de if staat er tussen de haakjes de conditie. Als de uitkomst van dat wat er tussen de haakjes staat true is, wordt de opdracht erna uitgevoerd. PHP is heel soepel wat de true betreft. Alles wat geen false, 0, null of '' (lege string) is, is voor PHP waar.

Als je een HAVO diploma hebt, kan je je inschrijven ....

of:

$havo_diploma = true;
if ($havo_diploma) {
  echo '<button type="button" class="inschrijven">Schrijf je in</button>';
}

Als je minstens 18 bent mag je een biertje drinken.

if ($leeftijd < 18) {
  $display = '<p><strong>Geen alcohol!</strong></p>';
} else {
  $display ='<p><strong>Biertje?</strong></p>';
}
echo $display;

Vergelijkingsoperatoren

Vaak gaan we tussen de haakjes achter de if iets vergelijken. Ben jij jonger dan 18? Hebben wij dezelfde leeftijd? Komen de wachtwoorden overeen?

OperatorBeschrijving
===Is gelijk en ook nog hetzelfde type? (5 === '5' geeft false)
!==Is ongelijk en ook nog hetzelfde type? (De uitkomst is true als ongelijk.)
>Is groter dan?
>=Is groter dan of gelijk aan?
<Is kleiner dan?
<=Is kleiner dan of gelijk aan?

if () {} elseif () {} else {}

Met elseif erbij kunnen meerdere opties gecheckt worden. Per conditie kunnen dan specifieke opdrachten worden vastgelegd. Als één conditie true is worden de opties verderop niet meer gecheckt. De evaluatievolgorde is dus van links naar rechts en van boven naar beneden.

Voor kleine kinderen kost het niks, voor schoolkinderen € 5, voor studenten € 7 en voor alle anderen € 10.

Of in PHP commentaar geven op basis van het cijfer:

if ($cijfer < 4) {
  $commentaar = 'Er mist nog heel veel aan kennis.';
} elseif ($cijfer < 5.5) {
  $commentaar = 'Iets meer oefenen!';
elseif ($cijfer <= 6.5) {
  $commentaar = 'Okay, maar het kan beter!';
} elseif ($cijfer <= 8) {
  $commentaar = 'Goed gedaan!';
} elseif ($cijfer > 8 && $cijfer <= 10) {
  $commentaar = 'Uitstekend!';
} else {
  $commentaar = 'Ingevoerd cijfer klopt niet.';
}

Logische operatoren: && - || - !

Soms wordt er een combinatie van omstandigheden gebruikt om te beslissen of iets wel of niet moet gebeuren.

Je bent minimaal 21 en hebt een rijbewijs.

Je bent medewerker of student van de HAN.

Je hebt een diploma maar geen werkervaring of andersom.

  • && (‘logische en’): beide condities moeten waar zijn, oftewel beide expressies moeten true opleveren.
  • || (‘logische of’): één van de condities moet waar zijn, minimaal één expressie moet true opleveren.
  • !: draai om: de waarde true wordt false, en false wordt true.

Hier een aantal voorbeelden met meerdere condities om te checken.

if ($cijfer < 1 || $cijfer > 10 || !is_numeric($cijfer) ) {
  $commentaar = 'Geen geldig cijfer';
} elseif ($cijfer >= 5.5 && $cijfer < 6) {
  $commentaar = 'Erg krap';
}

if ($mentor === 'Vries' && ($klas === 'I1A' || $klas === 'I1B')) {
  $bericht = 'Het mentoruur vervalt';
}

Herhalen en uitpakken met foreach()

De foreach-loop is een statement waarmee je items direct uit een array kan pakken, dat is dus anders dan een klassieke for-loop.

Een goed voorbeeld spreekt boekdelen:

$cijfers = [3, 4, 6, 7];
$som = 0
foreach($cijfers as $cijfer) {
  $som += $cijfer;
}

Uitpakken met sleutel en waarde

Een foreach kan ook een associatieve array uitpakken met sleutel en waarde.

Dus bijvoorbeeld:

$pizzas = [
  'Bloemkool Bechamel' => 7.95
  'Fauxlami Fest' => 8.95,
  'Margarhita' => 6.95
];

$lijst = "<ul>";
foreach($pizza as $pizza => $prijs) {
  $lijst .= "<li>{$pizza} - {$prijs} </li>";
}

In bovenstaande voorbeeld zie je dus dat zowel de pizzanaam (de sleutel) als de prijs (de waarde) uit te lezen vallen.

Zolang herhalen als: while () {}

Naast met foreach kan je met een while-loop statements herhaald uitvoeren. Dit doe je door vooraf een beginwaarde in te stellen, bij de conditie een eindwaarde en binnen het while-blok het telmechanisme.

while (conditie) {
  // Schrijf hier de broncode die je herhaald wilt uitvoeren.
}

Het voorbeeld met de tafel van 10 ziet er met een while-statement zo uit:

$getalMaximum = 10;
$tafel = '';
$getal = 1;
while ($getal <= 10) {
  $tafel .= "$getal * $getalMaximum = " . $getal * $getalMaximum . '<br>';
  $getal++;
}

Je gebruikt while als van tevoren niet vaststaat hoelang een conditie aanhoudt. Een typisch voorbeeld zou een applicatie zijn die een temperatuur verwerkt, die voortdurend met een sensor gemeten wordt.

Laat een waarschuwing zien zolang het vriest (temperatuur < 0). Uiteraard moet je dan binnen de herhaling telkens weer de temperatuur inlezen.