Hoe voorkom je 'doordraaien' while-loop?
Zoiets als:
Code (php)
Het script zal vast niet helemaal foutloos zijn, maar het idee is duidelijk:
Na 10 keer gaat het programma weer op zoek naar een getal dat nog niet getoond is maar kan niets vinden en zal dus maar steeds opnieuw die do...while blijven doen, op zoek naar een niet meer voorhanden zijnd nummer...
Hoe dit te voorkomen?
op een gegeven moment, in dit geval na
Bijna altijd als je programma terecht komt in een oneindige lus heb je iets verkeerd gedaan.
Je kunt natuurlijk ook een soort beveiliging inbouwen door een variabele te maken, en die elke nieuwe lus in de loop met 1 te verhogen, als je dan bijvoorbeeld bij de 1000 bent, doe je een break.
Als je een lus met mysql doet om bijvoorbeeld een lijst te vullen moet je ook altijd LIMIT gebruiken in je queries.
Gewijzigd op 29/04/2014 20:25:48 door jan terhuijzen
In dat geval moet je met een array werken:
maarhee, dit forum is voor beginners toch?
Wat ik natuurlijk bedoelde was of er zo'n soort functie is zoals dat LIMIT waar jij t over hebt.
Maar dat is blijkbaar niet zo.
bedankt voor je antwoord.
Met name als je van die 45 een groter getal maakt, laten we zeggen duizend(en) dan blijft jouw script lang zoeken naar het ene getal dat ontbreekt. Daar heb je in mijn voorbeeld geen last van.
Toevoeging op 29/04/2014 23:23:48:
EDIT
had de < 7 niet gezien
Gewijzigd op 29/04/2014 23:19:25 door Frank Nietbelangrijk
Ik denk dat franks oplossing, al dan niet aangevuld met een array_slice het efficiëntste is.
Met duizend loops:
Frank: 0.0052769184112549
Ger: 0.0049278736114502
Gaat nergens over natuurlijk, maar toch .....
Het hoeft niet eens per-see met een loop!
Of bij grotere range van getallen:
Code (php)
Gewijzigd op 30/04/2014 12:13:02 door Mark Hogeveen
Je hebt het al veranderd ;-)
Gewijzigd op 30/04/2014 12:17:20 door Ger van Steenderen
Gewijzigd op 30/04/2014 12:17:37 door Mark Hogeveen
Je gebruikte een niet bestaande functie ....