PHP-lessen - les 5 - Logische variabelen in PHP
We weten nu dat er in PHP getallen en strings bestaan. Maar dat is nog lang niet alles — in deze les bekijken we nog een ander type variabele, namelijk de logische variabelen. Ze worden “logisch” genoemd omdat ze worden gebruikt om de logica van onze code op te bouwen. Stel je een situatie voor waarin we, afhankelijk van bepaalde omstandigheden, verschillende acties moeten uitvoeren. Je hebt bijvoorbeeld een glas water waaruit je wilt drinken. Als er te weinig water in zit, krijg je niet genoeg, maar als er te veel in zit, stroomt het over wanneer je het glas kantelt. Dus moet je, afhankelijk van de hoeveelheid, water bijvullen of afgieten.
Dit kun je voorstellen als volgt:
$hoeveelheid_water_in_glas = 100;
$te_weinig_water = WAAR;
ALS $te_weinig_water
DAN $hoeveelheid_water_in_glas = $hoeveelheid_water_in_glas + 20;
In dit geval is de variabele $te_weinig_water
een logische variabele die de waarde TRUE (waar) of FALSE (onwaar) kan aannemen — niet meer en niet minder. En let op: de bovenstaande code is geen geldige PHP-code; als je dit in een PHP-bestand plaatst, zal Apache een foutmelding geven. In PHP ziet dit er zo uit:
<?php $water = 100; $not_enough_water = TRUE; if($not_enough_water){ $water = $water + 20; } ?>
We zullen later uitgebreid praten over de if
-voorwaarde, maar laten we nu kijken naar TRUE en FALSE. Vaak worden in plaats van TRUE en FALSE ook 1 en 0 gebruikt. Waarom zou je dan TRUE en FALSE gebruiken en het ingewikkelder maken? Zoals eerder vermeld, neemt een variabele met een geheel getal de helft minder geheugen in dan een variabele met een kommagetal. Logische variabelen nemen echter vier keer minder geheugen in dan gehele getallen en zelfs acht keer minder dan kommagetallen. Daarom is het verstandiger om TRUE of FALSE te gebruiken wanneer dat mogelijk is.
Misschien denk je: “Wat maakt die paar bytes nou uit, ik heb 8 GB RAM op mijn server.” Maar stel je voor dat je een website hebt met 1000 integer-variabelen die je kunt vervangen door logische waarden. Bij het laden van de site verbruiken deze integer-variabelen ongeveer 4 megabyte geheugen. Als je ze vervangt door booleans, is dat slechts 1 megabyte. En als 100 gebruikers de site tegelijkertijd bezoeken, kost dat 400 MB met integers, maar slechts 100 MB met booleans. Een verschil van 300 MB! Natuurlijk is dit een vereenvoudigd voorbeeld, maar het principe is duidelijk.
Hoe logische variabelen zich als getallen gedragen
<?php $var1 = TRUE; $var2 = TRUE + 1; echo $var2; ?>Het resultaat is 2. Dat betekent dat PHP automatisch het logische type converteert naar een getal (TRUE = 1, FALSE = 0). Maak je dus geen zorgen over type-incompatibiliteit bij eenvoudige berekeningen.