Php indien niet leeg. Oefen met het gebruik van de PHP-functie empty(). Verschil tussen variabelen met NULL-waarde en ongedefinieerde variabelen

variabele string (12)

Ik heb een functie isNotEmpty die true retourneert als de string niet leeg is en false als de string leeg is. Ik kwam erachter dat het niet werkt als ik er een lege regel doorheen haal.

Functie isNotEmpty($input) ( $strTemp = $input; $strTemp = trim($strTemp); if(strTemp != "") //Ook dit geprobeerd "if(strlen($strTemp) > 0)" ( return true ) retourneert onwaar;

De string wordt gecontroleerd met isNotEmpty:

If(isNotEmpty($userinput["phoneNumber"])) ( //valideer het telefoonnummer ) else ( echo "Telefoonnummer niet ingevoerd
"; }

Als de regel leeg is, wordt anders niet uitgevoerd. Ik begrijp niet waarom. Kan iemand hier alstublieft wat licht op werpen.

Antwoorden

als u een veld heeft namelijk serienummer en u wilt controleren op lege ruimte

$serienummer = trim($_POST); $q="selecteer * uit het product waarbij user_id="$_SESSION""; $rs=mysql_query($q); while($row=mysql_fetch_assoc($rs))( if(leeg($_POST["ijzers"]))( $irons=$row["product1"]; )

op deze manier kun je alle lussen in een lus doorlopen met een andere lege functie

Welnu, in plaats van te antwoorden (ik geloof dat je je probleem al hebt opgelost), zal ik je wat advies geven.

Ik weet niet hoe het met iedereen zit, maar persoonlijk raak ik erg geïrriteerd als ik zoiets zie als:

Als(<>) ( retourneert waar; ) retourneert onwaar;

dit vereist een elegante " return (<>); " Kijk altijd naar uw code en verwijder deze logica. Voor elk situatie heeft u de IF-instructie niet nodig.

Ik schrijf gewoon mijn eigen is_string-functie om de typen te controleren en strlen om de lengte te controleren.

Functie emptyStr($str) ( return is_string($str) && strlen($str) === 0; ) print emptyStr("") ? "leeg" : "niet leeg"; // leeg

EDIT: Je kunt ook de trimfunctie gebruiken om te controleren of een string niet bevat.

Is_string($str) && strlen(trim($str)) === 0;

PHP heeft een ingebouwde functie genaamd empty() De test wordt gedaan door if(empty($string))(...) php.net link: php empty te typen

Jij hebt het antwoord, maar in jouw geval kun je het gebruiken

Retourneer leeg($input);

Retourneert is_string($input);

Eenvoudig probleem. Wijziging:

Als(strTemp != "")

Als($strTemp != "")

Misschien kun je het ook veranderen in:

Als($strTemp !== "")

sinds != "" zal true retourneren als je het numerieke getal 0 en een paar andere gevallen doorgeeft vanwege de automatische typeconversie van PHP.

Houd er ook rekening mee dat PHP al een lege()-functie heeft.

PHP evalueert een lege string als false, dus je kunt eenvoudigweg het volgende gebruiken:

If (trim($userinput["phoneNumber"])) ( // valideer het telefoonnummer ) else ( echo "Telefoonnummer niet ingevoerd
"; }

Ik gebruik altijd regex om te controleren op een lege string, die teruggaat tot de tijd van CGI/Perl en Javascript, dus waarom bijvoorbeeld niet PHP (hoewel niet getest)

Return preg_match("/\S/", $input);

Waarbij \S elk teken zonder spaties vertegenwoordigt

Gebruik gewoon de functie strlen().

If (strlen($s)) ( // niet leeg )

Onlangs stelde ik mezelf dezelfde vraag.
Er zijn verschillende mogelijke oplossingen, hier zijn 3 geldige oplossingen:

  • s.indexOf(starter) === 0
  • s.substr(0,starter.lengte) === starter
  • s.lastIndexOf(starter, 0) === 0 (toegevoegd na het bekijken van het antwoord van Mark Bayer)
  • met behulp van een lus:

    Functie startsWith(s,starter) ( for (var i = 0,cur_c; i< starter.length; i++) { cur_c = starter[i]; if (s[i] !== starter[i]) { return false; } } return true; }

De laatste oplossing, waarbij een lus wordt gebruikt, ben ik nog niet tegengekomen.
Verrassend genoeg is deze oplossing aanzienlijk beter dan de eerste drie.
Hier is de jsperf-test die ik heb uitgevoerd om tot deze conclusie te komen: http://jsperf.com/startswith2/2

ps: ecmascript 6 (harmony) introduceert zijn eigen startsWith-methode voor strijkers.
Bedenk eens hoeveel tijd er bespaard zou zijn als ze hadden gedacht om deze broodnodige methode in de eerste versie op te nemen.

Update

Merk op dat er twee lusoptimalisaties zijn die Steve heeft opgenomen, de eerste van de twee toonde betere prestaties, dus ik zal die code hieronder posten:

Functie startsWith2(str, prefix) ( if (str.length< prefix.length) return false; for (var i = prefix.length - 1; (i >= 0) && (str[i] === voorvoegsel[i]); --i) doorgaan;< 0; }

retour ik Als je bij het werken met strings moet controleren of een string leeg is, gebruiken beginnende programmeurs meestal de functie strlen() Als je bij het werken met strings moet controleren of een string leeg is, gebruiken beginnende programmeurs meestal de functie. Deze functie is vrij snel omdat deze geen berekeningen uitvoert, maar eenvoudigweg de reeds bekende waarde van de tekenreekslengte retourneert, beschikbaar in zval (PHP gebruikt een C-structuur om variabelen op te slaan). Maar toch, omdat - dit is een functie, deze is een beetje traag omdat er verschillende acties voor nodig zijn wanneer deze wordt aangeroepen, zoals het converteren naar kleine letters en het doorzoeken van de hashtabel. In sommige gevallen kunt u de uitvoeringssnelheid van uw code verhogen door leeg() - dit is een functie, deze is een beetje traag omdat er verschillende acties voor nodig zijn wanneer deze wordt aangeroepen, zoals het converteren naar kleine letters en het doorzoeken van de hashtabel. In sommige gevallen kunt u de uitvoeringssnelheid van uw code verhogen door..., maar ook

Je kunt het nog een beetje optimaliseren. Laten we een voorbeeld nemen Bijvoorbeeld het beeldpad controleren

En dus komt de hele taak neer op het controleren of een variabele van het type string leeg is. Laten we 4 manieren proberen:

  • if(strlen($img_path)>0)
  • als($img_path(0))
  • if(leeg($img_path))
  • en nog een manier voor het laatst.

En dus zullen we op de eerste manier schrijven:

Functie check_image_path($img_path ) ( if (strlen ($img_path ) >0 ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

Laten we testen uitvoeren, de gemiddelde testtijd duurde 1.43795800209 sec.

Als ik er nog eens goed over nadenk... U kunt in één keer toegang krijgen tot het eerste teken van de regel, in plaats van tot de hele regel. Als het eerste teken aanwezig is, is de string niet leeg. Het eerste teken in de regel is genummerd met "0".

Functie check_image_path($img_path) ( if ($img_path ( 0 ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

gemiddelde testduur 1.19431300163 sec., 17% van de gespeelde tijd

Laten we nu proberen te schrijven met empty():

Functie check_image_path($img_path) ( if (leeg ($img_path) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

gemiddelde testduur 1.1341319084 sec., 5% van de tijd afgespeeld vanaf het vorige voorbeeld

Laten we nu eens kijken naar het voorlaatste en laatste voorbeeld hierboven. Laten we eens kijken hoe dit kan worden gecombineerd. denk na... hoe kun je anders optimaliseren?

Functie check_image_path($img_path) ( if (leeg ($img_path ( 0 ) ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

gemiddelde testduur 1.07465314865 sec., en opnieuw wonnen we 5% van de tijd...

Hoe werkt het en waarom is het sneller? Maar $img_pad(0) retourneert het eerste teken... en vervolgens de functie - dit is een functie, deze is een beetje traag omdat er verschillende acties voor nodig zijn wanneer deze wordt aangeroepen, zoals het converteren naar kleine letters en het doorzoeken van de hashtabel. In sommige gevallen kunt u de uitvoeringssnelheid van uw code verhogen door controleert op een lege string... het verschil met het vorige voorbeeld is dat slechts één teken wordt doorgegeven aan de functie, en niet de hele string. Dus van het eerste tot het laatste voorbeeld hebben we gewonnen 25% tijd.

In PHP zijn de waarden FALSE en NULL en de bijbehorende waarden anders dan hoe ze gewoonlijk in andere talen zijn en hebben ze hun eigen, niet voor de hand liggende kenmerken.
Het artikel bespreekt deze functies.
Voor beginners kan dit handig zijn om het volledige plaatje te zien, voor ervaren lezers kan dit handig zijn om hun geheugen op te frissen als een nuance hen ontgaan is.

FALSE in If-instructies

Volgens de PHP-documentatie zijn de volgende waarden FALSE na het casten naar Boolean:
  • de Booleaanse waarde zelf is FALSE
  • een lege string ("") en de string "0".
  • lege array (array) – array().
  • een object met nullidvariabelen (alleen PHP 4, niet behandeld in dit artikel)
  • speciale NULL-waarde (inclusief niet-ingestelde variabelen)
  • SimpleXML-objecten (niet behandeld in dit artikel)
Dit betekent dat als dergelijke waarden worden doorgegeven aan de voorwaarde:
als (…) echo “1”; anders echo “0”;
dan wordt de string "0" afgedrukt.

Als de waarde van de variabele niet is ingesteld (niet ingesteld), kan er ook een waarschuwing worden gegeven. Laten we u eraan herinneren dat de waarschuwing in de voorwaarde kan worden verwijderd door @ vóór de variabele te schrijven.

Bijvoorbeeld:

Als (@$undefVar) (…)
Maar je moet @ alleen in extreme gevallen gebruiken, als je goed hebt nagedacht en er geen andere geschikte opties zijn. Zie isset() functie.

De functie is_null() en de taalconstructies isset() en empty()

is_null() retourneert alleen TRUE voor variabelen waaraan geen enkele waarde is toegewezen of waaraan de waarde NULL is toegewezen.
isset() retourneert één-op-één Booleaanse waarden vergeleken met is_null() .
Als aan de variabele geen waarde is toegewezen, geeft is_null() ook een waarschuwing "Ongedefinieerde variabele", in tegenstelling tot isset(), die geen enkele waarschuwing geeft.
Bedenk dat u, om de waarde van een variabele te verwijderen, de functie unset() kunt gebruiken. U kunt hiervoor ook de waarde NULL toewijzen om compilerwaarschuwingen te voorkomen wanneer u de waarde van een variabele probeert te lezen.

Houd er rekening mee dat u, in tegenstelling tot variabelen, om met constanten te werken de construct gedefinieerd() moet gebruiken.

Snaarrepresentatie

Laten we eens kijken naar de stringrepresentatie van valse constanten.
Door aaneenschakeling worden de waarden bijvoorbeeld omgezet in de volgende tekenreeksen, weergegeven in de onderstaande tabel:

Het onderwerp converteren naar strings wordt gedetailleerder beschreven op de officiële website in de paragraaf Converteren naar string.

Vergelijkingsoperatoren

Laten we verder gaan met vergelijkingsoperatoren.
Alle valse waarden retourneren zoals verwacht waar, wanneer ze worden vergeleken met FALSE met behulp van de operator " ==".
Maar u moet hier niet op transitiviteit vertrouwen als u valse tekenreeksconstanten met elkaar vergelijkt.
Hier is een volledige tabel voor het vergelijken van valse waarden (plus geeft tabelelementen aan die, wanneer ze worden vergeleken met de operator "!=", een echte waarde retourneren:

$undef – een variabele waaraan geen waarde is toegewezen

Uit de tabel kunnen enkele aangename conclusies worden getrokken:
1. Als we weten dat we alleen strings gebruiken, kunnen we ze veilig vergelijken en hoeven we ons geen zorgen te maken dat "" (een lege string) gelijk zal zijn aan "0".
2. Arrays zijn nooit gelijk aan strings, gehele getallen of reële getallen.

Omdat de typen verschillende valse constanten verschillend zijn, kunnen een paar operatoren === en !== worden gebruikt om ze van elkaar te onderscheiden.
De operator === retourneert false voor alle paren valse waarden.
Retourneert alleen de echte waarde voor argumenten waarvan aan één de waarde NULL is toegewezen en aan de tweede geen waarde is toegewezen.

Verschil tussen variabelen met NULL-waarde en ongedefinieerde variabelen

Met de operator === kunt u onderscheid maken tussen alle valse waarden, behalve variabelen met een NULL-waarde en variabelen waaraan geen waarde is toegewezen.

Dergelijke variabelen kunnen worden onderscheiden met behulp van de functie get_defined_vars().

Als u wilt bepalen of er een waarde is toegewezen aan de variabele $var, kunt u hiervoor het volgende codefragment gebruiken:
if (array_key_exists("var", get_gedefinieerde_vars())) ( echo "var is gedefinieerd"; // $var is toegewezen NULL ) else ( echo "var is NIET gedefinieerd"; // $var is niet gedefinieerd of niet ingesteld($ var) werd genoemd)

Conclusies

Je moet altijd onthouden dat in PHP twee valse waarden mogelijk niet gelijk aan elkaar zijn, en dat variabelen die op het eerste gezicht verschillend lijken, bij vergelijking hetzelfde kunnen blijken te zijn. Om dergelijke verrassingen te voorkomen, kunt u de operatoren === en !== gebruiken.

Als u met arrays werkt, kunt u, om verrassingen te voorkomen, een functie schrijven om waarden om te zetten in gegarandeerd verschillende indexen. Daarna zijn de elementen van de array alleen toegankelijk via deze. Dit kan het programma vertragen, maar voorkomt verrassingen.

Er werd getest op PHP 5.3.1.

Extra koppelingen

1. Vergelijkingstabellen van het PHP-type.
2. MySQl Null en lege strings in de context van PHP.

Tags: tags toevoegen

Moderne programmering is al lange tijd succesvol in het manipuleren van ongetypeerde variabelen. Het type van de variabele kan niet vooraf worden gespecificeerd en kan tijdens de uitvoering van het programma worden gewijzigd.

Dit concept is fundamenteel geworden in het algemene programmeerparadigma. Helemaal aan het begin van het programmeertijdperk vereisten talen met hetzelfde grondige vertrouwen dat de programmeur variabelen vooraf definieerde en er strikt voor zorgde dat er niets illegaals aan werd toegewezen. Noch programma's, noch programmeertalen hadden voorheen enig idee dat een variabele van type verandert.

Over het lege en niet-bestaande

De PHP empty()-functie is het omgekeerde van de isset()-functie en heeft enkele speciale gebruiksfuncties. Als er geen variabele is, reageert de eerste functie positief en is het resultaat waar, en de tweede reageert negatief, dat wil zeggen dat de waarde onwaar zal zijn.

Per definitie is isset() ontworpen om het bestaan ​​van een variabele te controleren. Het maakt niet uit wat en hoe de variabele is toegewezen, het belangrijkste is dat deze bestaat en niet wordt vernietigd door de functie unset(). Het resultaat van de functie isset() is positief - waar. Het is belangrijk om te onthouden dat als $iVar = 0; dan zal isset($iVar) waar zijn, maar empty($iVar) zal ook waar zijn.

In het eerste geval betekent het resultaat dat de variabele bestaat, in het tweede geval is de variabele leeg, dat wil zeggen de waarde “0” in welke vorm dan ook, of het nu een string (“0”) of een getal is (fractioneel - 0.0 of geheel getal - 0) is hetzelfde: empty($iVar) zal waar zijn.

Over veiligheid en controle

De praktijk leert dat ongetypeerde talen de programmeur veel meer vrijheid geven, maar gaan ervan uit dat zijn houding ten opzichte van het werken aan het algoritme verantwoordelijker is.

PHP biedt een moderne syntaxis die gevestigde semantiek ondersteunt, weinig fouten bevat, maar zorgvuldige aandacht vereist. Voor het aanroepen van een functie zijn bijvoorbeeld een bepaald aantal parameters vereist.

Bij het aanroepen van een functie is het helemaal niet nodig om alle parameters door te geven; u kunt er slechts een aanzienlijk deel van doorgeven. De functie "moet" de aanwezigheid en het bestaan ​​van alle parameters controleren. Degenen die ontbreken of onjuiste waarden hebben, moeten naar de normale vorm worden hersteld en de vereiste waarden krijgen.

In deze context is de PHP empty()-functie essentieel. Uitdrukking:

$a = "1;2" + 20

zal aan de variabele $a de waarde 21 toekennen, aangezien het eerste deel van de uitdrukking wordt weergegeven als 1, en het tweede deel 20.

Het resultaat zal van het type nummer zijn en de PHP-functie empty($a) zal als resultaat false hebben, dat wil zeggen dat de variabele $a niet leeg is.

In deze context heeft het een functie:

funcTest($a ​​= 0, $b = 20)

Bij bellen:

$res = funcTest($aVal, $bVal)

zal hebben wat gewenst is, dat wil zeggen het resultaat van de functie. En als er gebeld wordt:

  • $res = funcTest($aVal. $bVal)

De functietekst bevat slechts één parameter met de waarde "$aVal . $bVal" en hoogstwaarschijnlijk zal deze parameter worden geïnterpreteerd als een reeks tekens.

PHP empty() voor objecten en arrays

De taalsyntaxis heeft voldoende constructies en functies om met objecten en arrays te werken, maar vanuit het oogpunt van het controleren op hun bestaan ​​en op de aanwezigheid van een waarde zijn er geen speciale verschillen met variabelen.

PHP leeg (array) - gelijk aan het aanroepen van leeg (eenvoudige variabele). Er zijn echter zeer belangrijke overwegingen met betrekking tot objecten. Wat betreft het controleren van het bestaan ​​van een object (isset), is de vraag nauwelijks zinvol. Wat de PHP empty()-functie betreft, blijft de wenselijkheid van het gebruik ervan twijfelachtig.

Volgens de logica van objectgeoriënteerd programmeren heeft een object zijn eigen inhoud en zijn eigen reeks methoden. Alleen het object zelf kan vertellen of het leeg is of niet, maar geen functie van derden, ook al maakt het deel uit van de syntaxis van de taal.

Een object en zijn functie empty()

Op deze eenvoudige maar legitieme basis moet elk object worden beschouwd in de context van zijn begrip van ‘leegte’. De implementatie van het object "Personeelstabel" bestaat bijvoorbeeld uit records "Werknemer". Maar als er geen enkele werknemer is, dan zijn er in de "Personeelslijst" altijd opties voor de posities van potentiële werknemers.

Op welk niveau moet ik hier de PHP-leegobjectfunctie gebruiken? Op het niveau "Personeel" bestaat alles, ook al is er geen enkele medewerker. Op het niveau "Medewerker" bestaat het object al, ook al is het niet volledig gevuld. Een niet volledig gevuld object kan worden geclassificeerd als een leeg object. Er is geen voordeel voor de personeelstafel.

Afhankelijk van je programmeerstijl zijn de functies PHP empty() en isset() erg belangrijk voor het bouwen van een veilig en betrouwbaar algoritme, maar voor objecten is het nog steeds beter om een ​​variant van empty() te hebben die wordt gedefinieerd door de inhoud ervan.

In PHP zijn de waarden FALSE en NULL en de bijbehorende waarden anders dan hoe ze gewoonlijk in andere talen zijn en hebben ze hun eigen, niet voor de hand liggende kenmerken.
Het artikel bespreekt deze functies.
Voor beginners kan dit handig zijn om het volledige plaatje te zien, voor ervaren lezers kan dit handig zijn om hun geheugen op te frissen als een nuance hen ontgaan is.

FALSE in If-instructies

Volgens de PHP-documentatie zijn de volgende waarden FALSE na het casten naar Boolean:
  • de Booleaanse waarde zelf is FALSE
  • een lege string ("") en de string "0".
  • lege array (array) – array().
  • een object met nullidvariabelen (alleen PHP 4, niet behandeld in dit artikel)
  • speciale NULL-waarde (inclusief niet-ingestelde variabelen)
  • SimpleXML-objecten (niet behandeld in dit artikel)
Dit betekent dat als dergelijke waarden worden doorgegeven aan de voorwaarde:
als (…) echo “1”; anders echo “0”;
dan wordt de string "0" afgedrukt.

Als de waarde van de variabele niet is ingesteld (niet ingesteld), kan er ook een waarschuwing worden gegeven. Laten we u eraan herinneren dat de waarschuwing in de voorwaarde kan worden verwijderd door @ vóór de variabele te schrijven.

Bijvoorbeeld:

Als (@$undefVar) (…)
Maar je moet @ alleen in extreme gevallen gebruiken, als je goed hebt nagedacht en er geen andere geschikte opties zijn. Zie isset() functie.

De functie is_null() en de taalconstructies isset() en empty()

is_null() retourneert alleen TRUE voor variabelen waaraan geen enkele waarde is toegewezen of waaraan de waarde NULL is toegewezen.
isset() retourneert één-op-één Booleaanse waarden vergeleken met is_null() .
Als aan de variabele geen waarde is toegewezen, geeft is_null() ook een waarschuwing "Ongedefinieerde variabele", in tegenstelling tot isset(), die geen enkele waarschuwing geeft.
Bedenk dat u, om de waarde van een variabele te verwijderen, de functie unset() kunt gebruiken. U kunt hiervoor ook de waarde NULL toewijzen om compilerwaarschuwingen te voorkomen wanneer u de waarde van een variabele probeert te lezen.

Houd er rekening mee dat u, in tegenstelling tot variabelen, om met constanten te werken de construct gedefinieerd() moet gebruiken.

Snaarrepresentatie

Laten we eens kijken naar de stringrepresentatie van valse constanten.
Door aaneenschakeling worden de waarden bijvoorbeeld omgezet in de volgende tekenreeksen, weergegeven in de onderstaande tabel:

Het onderwerp converteren naar strings wordt gedetailleerder beschreven op de officiële website in de paragraaf Converteren naar string.

Vergelijkingsoperatoren

Laten we verder gaan met vergelijkingsoperatoren.
Alle valse waarden retourneren zoals verwacht waar, wanneer ze worden vergeleken met FALSE met behulp van de operator " ==".
Maar u moet hier niet op transitiviteit vertrouwen als u valse tekenreeksconstanten met elkaar vergelijkt.
Hier is een volledige tabel voor het vergelijken van valse waarden (plus geeft tabelelementen aan die, wanneer ze worden vergeleken met de operator "!=", een echte waarde retourneren:

$undef – een variabele waaraan geen waarde is toegewezen

Uit de tabel kunnen enkele aangename conclusies worden getrokken:
1. Als we weten dat we alleen strings gebruiken, kunnen we ze veilig vergelijken en hoeven we ons geen zorgen te maken dat "" (een lege string) gelijk zal zijn aan "0".
2. Arrays zijn nooit gelijk aan strings, gehele getallen of reële getallen.

Omdat de typen verschillende valse constanten verschillend zijn, kunnen een paar operatoren === en !== worden gebruikt om ze van elkaar te onderscheiden.
De operator === retourneert false voor alle paren valse waarden.
Retourneert alleen de echte waarde voor argumenten waarvan aan één de waarde NULL is toegewezen en aan de tweede geen waarde is toegewezen.

Verschil tussen variabelen met NULL-waarde en ongedefinieerde variabelen

Met de operator === kunt u onderscheid maken tussen alle valse waarden, behalve variabelen met een NULL-waarde en variabelen waaraan geen waarde is toegewezen.

Dergelijke variabelen kunnen worden onderscheiden met behulp van de functie get_defined_vars().

Als u wilt bepalen of er een waarde is toegewezen aan de variabele $var, kunt u hiervoor het volgende codefragment gebruiken:
if (array_key_exists("var", get_gedefinieerde_vars())) ( echo "var is gedefinieerd"; // $var is toegewezen NULL ) else ( echo "var is NIET gedefinieerd"; // $var is niet gedefinieerd of niet ingesteld($ var) werd genoemd)

Conclusies

Je moet altijd onthouden dat in PHP twee valse waarden mogelijk niet gelijk aan elkaar zijn, en dat variabelen die op het eerste gezicht verschillend lijken, bij vergelijking hetzelfde kunnen blijken te zijn. Om dergelijke verrassingen te voorkomen, kunt u de operatoren === en !== gebruiken.

Als u met arrays werkt, kunt u, om verrassingen te voorkomen, een functie schrijven om waarden om te zetten in gegarandeerd verschillende indexen. Daarna zijn de elementen van de array alleen toegankelijk via deze. Dit kan het programma vertragen, maar voorkomt verrassingen.