Inhoudsopgave:
Video: Cursus PHP - webformulieren 2024
De while-lus is de primaire manier, anders dan een for-lus, van herhalende code in PHP. Als HTML5- en CSS3-programmeur kunnen er momenten zijn dat u de ene boven de andere kiest, maar het is belangrijk om de verschillen tussen de twee te begrijpen.
while-loops lijken veel op loops. Ze vereisen dezelfde gedachte:
-
Een sentry-variabele: Deze speciale variabele bestuurt de toegang tot de lus. In tegenstelling tot de int die meestal in for-lussen wordt gebruikt, kan de sentry van een while-lus van elk type zijn.
-
Initialisatie: Stel de beginwaarde van de sentry-variabele in voordat de lus begint. Vertrouw niet op standaardinstellingen (omdat je niet weet wat ze zullen zijn). Stel in plaats daarvan deze waarde zelf in.
-
Een voorwaarde: De while-instructie vereist een voorwaarde. Deze voorwaarde bepaalt de toegang tot de lus. Zolang de voorwaarde waar is, gaat de lus verder. Zodra de voorwaarde als onwaar is beoordeeld, wordt de lus afgesloten.
-
Een modifier: U moet op de een of andere manier de waarde van de sentry-variabele wijzigen. Het is belangrijk dat de wijzigingsverklaring ergens in de loop gebeurt. In een for-lus voegt u bijna altijd toe of trekt u af om een variabele te wijzigen. In een while-lus kan elke soort opdrachtinstructie worden gebruikt om de variabele aan te passen.
voor loops zijn een beetje veiliger dan while-lussen omdat de structuur van de lus u vraagt na te denken over initialisatie, conditie en modificatie. Alle drie de functies zijn ingebouwd in de for-verklaring. De while-instructie vereist alleen de voorwaarde. Dit kan je doen denken dat je de andere delen niet nodig hebt, maar dat zou gevaarlijk zijn.
In elk type lus moet u de sentry-variabele initialiseren en de waarde ervan wijzigen. Met de while-lus ben je verantwoordelijk voor het toevoegen van deze functies zelf. Als u dit niet doet, veroorzaakt dit eindeloze lussen of lussen die nooit gebeuren.
Kijk even naar de volgende code. php-programma om te zien hoe het werkt:
while. php img {height: 40px; width: 50px;}Dice Rolling Game 2
Welkom bij het dobbelspel. Zie hoeveel rollen het kost om een zes te krijgen!
php $ userNumber = 999; $ teller = 0; while ($ userNumber! = 6) {$ userNumber = rand (1, 6); print <<< HIER HIER; $ counter ++;} print "Het kostte $ counter probeert om een zes te krijgen.
"; ? >Probeer opnieuw!
Dit voorbeeld illustreert hoe subtiel while-lussen kunnen zijn. Alle belangrijke elementen zijn er, maar ze zien er niet allemaal uit als een deel van de while-lus. Initialiseer $ userNumber.
-
Voor deze lus is $ userNumber de sentry-variabele.De initialisatie moet garanderen dat de lus exact één keer wordt uitgevoerd. Omdat de voorwaarde ($ userNumber! = 6) is, moet u $ userNumber een waarde geven die duidelijk niet 6 is. 999 zal het werk doen en het is wild genoeg om duidelijk buiten bereik te zijn.
Hoewel de initialisatiestap wordt weergegeven in de code vóór de lus, is het vaak het beste om te beginnen met uw staat en vervolgens een back-up te maken van een regel om te initialiseren, omdat de initialisatiestap afhankelijk is van de voorwaarde.
Stel de voorwaarde in.
-
Denk na over wat de lus zou moeten voortzetten of stoppen. Onthoud dat de voorwaarde verklaart wanneer de lus doorgaat. Het is vaak gemakkelijker om na te denken over waardoor de lus wordt afgesloten. Dat is prima; keer het gewoon om. Als u bijvoorbeeld wilt dat de lus wordt afgesloten wanneer $ userNumber gelijk is aan 6, dan blijft u zo lang doorgaan als $ userNumber! = 6.
Pas de schildwacht aan.
-
Deze is lastig. Wijzig in dit specifieke voorbeeld de sentry-variabele door een nieuw willekeurig getal te krijgen: $ userNumber = rand (1, 6). Vaak in een while-lus is de modificatiestap inherent aan het probleem dat u aan het oplossen bent. Soms krijg je de nieuwe waarde van de gebruiker, soms haal je hem uit een bestand of database, of soms voeg je hem toe (net als een for-lus).
De sleutel hier is om ervoor te zorgen dat u een instructie hebt die de sentry-variabele aanpast en die de voorwaarde kan activeren. Als u bijvoorbeeld $ userNumber = rand (1, 5) gebruikt, resulteert dit in een eindeloze lus omdat $ userNumber nooit 6.
kan zijn, terwijl loops veel problemen kunnen veroorzaken omdat deze logische fouten kunnen veroorzaken. Dat wil zeggen dat de
syntaxis (structuur en spelling van de code) in orde is, maar het programma werkt nog steeds niet goed. Bijna altijd kan het probleem worden opgelost door na te denken over die drie delen van een welgemanierde lus: Initialiseer de wacht, creëer een zinvolle situatie en pas de schildwacht op de juiste manier aan.