当数组作为引用传递时,我们如何在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]);
}
}