PHP: how to move array pointer inside foreach loop?
php
Solution
You can just create an `ArrayIterator`Docs which is `seekable`Docs.
As it is an iterator, you can change the position while you iterate over it, some rudimentary example:
foreach ($iterator as $current) {
$iterator->next();
}
It should offer everything you need out of the box. If not, you could encapsulate your needs into an `Iterator`Docs on your own as well.
Problem
``` $animals = array('cat', 'dog', 'horse', 'elephant'); foreach($animals as $animal) { var_dump($animal); next($animals); } ``` The code above outputs: cat, dog, horse, elephant. I thought the `next` function should move the internal pointer of `$animals` and, thus, I should be getting this output instead: cat, horse. How do I make the internal pointer of $animals move forward (and backwards) such that it is affected in the foreach? EDIT 1: From the manual: As foreach relies on the internal array pointer changing it within the loop may lead to unexpected behavior. Nonetheless, I think this is what I need to do. EDIT 2: Per "Your Common Sense"'s link, I will provide a more detailed explanation of my problem. Here's some psuedo code: ``` array $foos; start loop of $foos - do thing #1 - do thing #2 - do thing #3 - keep doing thing #3 while the current value of $foos in the loop meets a certain criteria loop ``` When execution returns to the start of the loop, it should continue from the last array accessed by #3. Note that the array is associative, thus a `for ($i = 0 ...` approach won't work.