$animals = array('cat', 'dog', 'horse', 'elephant');
foreach($animals as $animal)
{
var_dump($animal);
next($animals);
}
上面的代码输出:猫、狗、马、大象。我认为该next
函数应该移动的内部指针$animals
,因此,我应该得到这个输出:猫,马。
如何使 $animals 的内部指针向前(和向后)移动,使其在 foreach 中受到影响?
编辑1:
从手册:
由于 foreach 依赖于内部数组指针,因此在循环内更改它可能会导致意外行为。
尽管如此,我认为这是我需要做的。
编辑2:
根据“您的常识”的链接,我将对我的问题提供更详细的解释。这是一些伪代码:
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
当执行返回到循环的开头时,它应该从 #3 访问的最后一个数组继续执行。请注意,该数组是 associative,因此一种for ($i = 0 ...
方法不起作用。