数组作为引用传递时移动指针


Moving pointer when array is passed as reference

当数组作为引用传递时,我们如何在foreach语句中向前或向后移动指针:

foreach($array as $key => &$val){
   if($condition1 == true) **set pointer to previous element**
    else **set pointer to previous to previous element**;
   if($condition2 == true) **set pointer to next element**
    else **set pointer to next to next element**;
}

第1版:如果我使用ArrayIterator,我必须更改很多代码,这是我想避免的。

在没有其他简单解决方案的情况下,我最终修改了代码以实现ArrayIterator类,并更改了程序逻辑

$obj = new ArrayObject( $arrayName );
$it = $obj->getIterator();
foreach ($it as $key=>&$val){
  if(condition1){
    $it->offsetSet($it->key()+1,$arrayName[$key+2]);
  }
}