Re: foreach loop herdefinieren

[email protected] ("M. Sokolewicz") Mon, 09 Jun 2008 17:04:57 +0200
Newsgroups php.doc.nl
Message-ID <[email protected]>
Arnoud wrote:
> In het onderstaande voorbeeld maakt de foreach loop gewoon het hele eerste array af van 1 tot 0. Graag had ik gezien dat de lijst zou worden omgezet in 1,2,3,4,8,9,0. Wat ik met de unset heb geprobeerd, maar daarmee maak je het foreach geheugen niet leeg. Wie helpt me aan een functie of een paar extra regels, zodat ik dat wel kan??
> 
> <?php
>   $arr = array(1,2,3,4,5,6,7,8,9,0);
>   foreach($arr as $a) {
>     echo "$a\n";
>     if ($a == 5) {
>       unset($arr);
>       $arr = array(8,9,0);
>     }
>   }
> ?>
> 
> Met vriendelijk groet,  Arnoud
> [email protected]
> 

Dit is de mailinglijst voor de nederlandse vertaling van de PHP 
handleiding, niet voor hulp met code. Daarvoor kun je beter een mail 
sturen naar [email protected]

Om antwoord te geven op je vraag: Je kunt 2 dingen doen:
1. de input array veranderen in: $arr = array(1,2,3,4,5,8,9,0);
of
2. ertussen skippen met continue; dus:
$arr = array(1,2,3,4,5,6,7,8,9,0);
foreach($arr as $a) {
if($a > 5 and $a < 8) {
continue;
} else {
    echo $a, "\n";
    // doe iets
}
}

De input array van de foreach veranderen _terwijl_ die hem loopt is 
gevaarlijk, maar kan als je een reference gebruikt. Opnieuw, dit is in 
99.999% van de gevallen een slecht idee.

- Maciek