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