PHP:如何在foreach循环中移动数组指针?

$animals = array('cat', 'dog', 'horse', 'elephant');
foreach($animals as $animal)
{
   var_dump($animal);
   next($animals);
}

上面的代码输出:猫,狗,马,大象.我认为下一个函数应该移动$animals的内部指针,因此,我应该得到这个输出:cat,horse.

如何使$animals的内部指针向前(和向后)移动,以便它在foreach中受到影响?

编辑1:

从手册:

As foreach relies on the internal array pointer changing it within the
loop may lead to unexpected behavior.

尽管如此,我认为这是我需要做的.

编辑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访问的最后一个数组继续.请注意,数组是关联的,因此for($i = 0 …方法不起作用.

解决方法:

你可以创建一个ArrayIterator­Docs,即seekable­Docs.

因为它是一个迭代器,你可以在迭代它时改变位置,一些基本的例子:

foreach ($iterator as $current) {
    $iterator->next();
}

它应该提供你需要的所有东西.如果没有,您也可以自己将需求封装到Iterator­Docs中.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...