anoniem Geplaatst: 25 juli 2004 Delen Geplaatst: 25 juli 2004 G'day, Ik heb de volgende code (sterk ingekort):[code:1:5b0d1ad4fe]<?php $msgs = imap_sort ($stream, SORTARRIVAL, 1, SE_NOPREFETCH, "UNDELETED"); $mail_amount = count ($msgs); $msgnumber = 0; foreach ($msgs as $i) { // een heel stuk code staat hier (in dit geval niet van belang) $msgnumber++; if ($msgnumber == 101) { break; } } ?>[/code:1:5b0d1ad4fe] De loop zal stoppen na 100 keer. Het is echter de bedoeling dat deze start bij het 51ste item, zodat er dan uiteindelijk maar 50 keer geloopt wordt. Waarom heb ik dit nodig? Het gaan om pagina's. Op pagina 1 is het geen probleem, dan begint hij bij 1 maar op pagina 2 moet hij beginnen met 51, pagina 2 met 101, ... Is er een simpele (en vooral zeer snelle) manier om de eerste x aantal keer van een loop over te slaan? Greetz, BelgiumBoy_007 Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 Een for-loop gebruiken, daar kan je veel beter de voorwaarden mee regelen waarmee de loop loopt. Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 Ik had eerst een for-loop, maar dat gaat niet meer. Eerst was het zo dat ik alle nummers tussen bvb. 50 en 101 nodig had, maar nu zullen er hier en daar wat nummers uit de reeks ontbreken ... Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 dan zou ik toch een for loop gebruiken en dan error handling inbouwen zodat de code niet verstoord wordt bij missende nummers... Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 [quote:aa54990b0e="BelgiumBoy_007"] Waarom heb ik dit nodig? Het gaan om pagina's. Op pagina 1 is het geen probleem, dan begint hij bij 1 maar op pagina 2 moet hij beginnen met 51, pagina 2 met 101, ...[/quote:aa54990b0e] Die laatste pagina 2 zal wel 3 moeten zijn. Als dat inderdaad zo is kun je het begin en einde beter berekenen. [code:1:aa54990b0e] $start = (($pagina - 1) * 50 ) +1; $einde = $start + 49; [/code:1:aa54990b0e] en dan een for loop wimb Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 [quote:bf0008db28="WimB"][quote:bf0008db28="BelgiumBoy_007"] Waarom heb ik dit nodig? Het gaan om pagina's. Op pagina 1 is het geen probleem, dan begint hij bij 1 maar op pagina 2 moet hij beginnen met 51, pagina 2 met 101, ...[/quote:bf0008db28] Die laatste pagina 2 zal wel 3 moeten zijn. Als dat inderdaad zo is kun je het begin en einde beter berekenen. [code:1:bf0008db28] $start = (($pagina - 1) * 50 ) +1; $einde = $start + 49; [/code:1:bf0008db28] en dan een for loop wimb[/quote:bf0008db28]En wat als ik op bvb. pagina 1 zit en de nummers 20, 21, 22, 30 ontbreken uit de reeks? Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 Als het een key is kun je met: [url=http://ch2.php.net/manual/en/function.array-key-exists.php]array_key_exists[/url] zien of het nummer erbij zit en anders met [url=http://ch2.php.net/manual/en/function.in-array.php]in-array[/url] of de waarde bestaat. wimb Quote Link naar reactie
anoniem Geplaatst: 25 juli 2004 Auteur Delen Geplaatst: 25 juli 2004 Het probleem is ondertussen al opgelost ... Ik ben tot de geniale ontdekking gekomen dat de array $msgs continu is maar de inhoud niet. Dit is zonder twijfel verkeerd geformuleerd dus even een demonstratie.[code:1:8b8b19a890]<?php print ("<pre>"); print_r ($msgs); print ("</pre>"); ?>[/code:1:8b8b19a890]GEEFT:[code:1:8b8b19a890]Array ( [0] => 19 [1] => 20 [2] => 6 [3] => 7 [4] => 9 [5] => 23 [6] => 11 [7] => 12 [8] => 13 [9] => 10 [10] => 8 [11] => 5 [12] => 22 [13] => 18 [14] => 21 [15] => 17 [16] => 1 [17] => 3 [18] => 2 [19] => 4 [20] => 14 [21] => 15 [22] => 16 )[/code:1:8b8b19a890]En daarmee is het wel doenbaar met een for-loop :P Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen