私は複雑O(n)
と解決策を見つけたし、後方と前方のアレイを介し求める必要はありません:
$a = array('leg1'=>'LA', 'leg2'=>'NY', 'leg3'=>'NY', 'leg4'=>'FL');
// initiate the iterator for "next_val":
$nextIterator = new ArrayIterator($a);
$nextIterator->rewind();
$nextIterator->next(); // put the initial pointer to 2nd position
// initiaite another iterator for "next_next_val":
$nextNextIterator = new ArrayIterator($a);
$nextNextIterator->rewind();
$nextNextIterator->next();
$nextNextIterator->next(); // put the initial pointer to 3rd position
foreach($a AS $k => $v){
$next_val = $nextIterator->current();
$next_next_val = $nextNextIterator->current();
echo "Current: $v; next: $next_val; next_next: $next_next_val" . PHP_EOL;
$nextIterator->next();
$nextNextIterator->next();
}
はちょうどあなたが$next_val
と$next_next_val
に中継することを計画している場合valid()
をテストすることを忘れないでください。
働くかもしれないソリューションです。http://stackoverflow.com/a/5096852/1022697 – qwertynl
私はそのためのカスタムイテレータを作成します。 –