Vergelijkende operatoren gebruik je bij het formuleren van voorwaarden om twee argumenten in een logische relatie te plaatsen en vervolgens te beoordelen of deze relatie waar (TRUE) of niet waar (FALSE) is. Als je vergelijkende operatoren gebruikt in PHP, worden ze toegepast op twee variabelen in de expression van de if-constructie:
if ($a == $b)
{
statement;
}
Deze controlestructuur betekent: als variabele $a gelijk is aan variabele $b, worden de commando’s uitgevoerd die in het statement staan.
De vergelijkende operatoren in PHP zijn gebaseerd op de programmeertaal C en verschillen soms fors van de klassieke wiskundige symbolen. In onderstaande tabel vind je een overzicht.
Vergelijkende operator | Omschrijving | Voorwaarde |
---|
== | is gelijk | Er is voldaan aan de voorwaarde als $a en $b dezelfde waarde hebben. |
=== | is identiek | Er is voldaan aan de voorwaarde als $a en $b dezelfde waarde hebben en tot hetzelfde datatype behoren. Ter illustratie geven we een voorbeeld waarin een integer (1) met een string ("1") wordt vergeleken: 1 == "1" //TRUE 1 === "1" //FALSE Gebruik voor voorwaarden waarin twee variabelen identiek moeten zijn, altijd de vergelijkende operator === (is identiek). |
!= | is niet gelijk | Er is voldaan aan de voorwaarde als $a en $b geen gelijke waarden hebben. |
!== | niet identiek | Er is voldaan aan de voorwaarde als $a en $b geen gelijke waarden hebben of behoren tot verschillende datatypes. |
< | is kleiner dan | Er is voldaan aan de voorwaarde als de waarde van $a kleiner is dan de waarde van $b. |
> | is groter dan | Er is voldaan aan de voorwaarde als de waarde van $a groter is dan de waarde van $b. |
<= | is kleiner dan of gelijk aan | Er is voldaan aan de voorwaarde als de waarde van $a kleiner is dan de waarde van $b of als $a en $b dezelfde waarde hebben. |
>= | is groter dan of gelijk aan | Er is voldaan aan de voorwaarde als de waarde van $a groter is dan de waarde van $b of als $a en $b dezelfde waarde hebben. |
Het volgende script is bedoeld om deze controlestructuur te verduidelijken. We vergelijken twee gehele getallen via de operator < (is kleiner):
<?php
$number1 = 10;
$number2 = 20;
if($number1 < $number2) {
echo "The condition is fulfilled";
}
We definiëren de variabelen $number1 en $number2 en kennen er de waarden 10 en 20 aan toe. Vervolgens stellen we een voorwaarde op: als $number1 kleiner is dan $number2, moet de string worden uitgevoerd die in het echo-statement staat.
Het resultaat van het script bevat het antwoord: 10 is kleiner dan 20, dus de if-constructie geeft het resultaat TRUE. Er is voldaan aan de voorwaarde.
Wil je een commando definiëren dat wordt uitgevoerd als de voorwaarde juist niet is vervuld? Gebruik dan de taalconstructie else if-constructie. Dit doe je als volgt:
<?php
if(Condition a)
{
Command b;
}
else
{
Command c
}
?>
Ook dit script controleert of voorwaarde a het resultaat TRUE of FALSE geeft. Als aan voorwaarde a is voldaan (TRUE) wordt opdracht b uitgevoerd. Is voorwaarde a niet vervuld (FALSE)? Dan slaat het script de opdracht b over en voert het opdracht c uit.
We breiden ons script met de else-constructie verder uit en vervangen de vergelijkende operator < (is kleiner dan) door == (is gelijk aan):
<?php
$number1 = 10;
$number2 = 20;
if($number1 == $number2)
{
echo "The condition is fulfilled";
}
else
{
echo "The condition is not fulfilled";
}
?>
Deze keer geeft de if-constructie het resultaat FALSE. De waarde van de variabele $number1 is immers niet gelijk aan de waarde van $number2, aan de voorwaarde is niet voldaan. Daarom voert het script de opdracht niet onder if uit, maar onder else.
Let op! Wil je twee waarden vergelijken en een opdracht laten uitvoeren als ze gelijk zijn aan elkaar? Dan gebruik je in PHP een dubbel is-teken (==). Het enkele is-teken (=) gebruik je alleen als je een waarde aan een variabele wilt toewijzen.
Het maken van negatieve voorwaarden is ook mogelijk. Hiervoor plaats je uitroepteken (!) vóór de uitdrukking.
<?PHP
$number1 = 10;
$number2 = 20;
if ($number1 == $number2)
{
echo "The numbers are equal.";
}
if (!($number1 == $number2))
{
echo "The numbers are not equal.";
}
?>
Dit voorbeeld toont de voorwaarde $number1 == $number2 en de negatieve versie (‘is niet gelijk’) ervan. !($number1 == $number2) betekent dus hetzelfde als ($number1 != $number2).
We geven een voorbeeld van de toepassing van if en else met een HTML-formulier dat om een wachtwoord vraagt. Hiertoe gebruiken we opnieuw onze PHP-bestanden page1.php en page2.php.
Open page1.php en voeg de volgende code toe aan het formulier:
<form action="page2.php" method="post">
Please enter your password: <input type="password" name="password" />
<input type="submit" value="Submit" />
</form>
De structuur komt overeen met het formulier dat je eerder maakte. Dit keer is één invoerveld voldoende: het veld waarin je het wachtwoord moet invoeren. Ook deze keer stuurt het script de uitvoer naar page2.php. We voegen de volgende code toe, waarmee we het ingevoerde wachtwoord vergelijken met een reeds opgeslagen wachtwoord:
<?PHP
$password = $_POST["password"];
if($password=="qwerty123")
{
echo "The password was correct";
}
else
{
echo "The password was incorrect";
}
?>
De code werkt als volgt: eerst kennen we een waarde toe aan de variabele $password in regel 2, die we via de HTTP POST-methode ophalen. Vervolgens definiëren we deze besturingsstructuur: de if-constructie in regel 3 moet controleren of de waarde van $password overeenkomt met de string qwertz123. Als dit het geval is, voert het script de string ‘The password was correct’ uit. Is het resultaat FALSE? Dan treedt else in regel 7 in werking en voert het script de string ‘The password is incorrect’ uit.
Nu gaan we naar het script page1.php via de URL http://localhost/page1.php.
De browser toont de webversie van ons HTML-wachtwoordformulier. We voeren het wachtwoord qwertz123 in zoals gedefinieerd in het script page2.php en klikken op de verzendknop.
De browser stuurt je automatisch door naar page2.php. Op de achtergrond vergelijkt de if-constructie onze invoer met het opgeslagen wachtwoord, concludeert dat ‘qwertz123 == qwertz123 is TRUE’ en voert de string ‘The password was correct’ uit.
Test zelf wat er gebeurt als je een ander wachtwoord in het invoerveld typt.