Quicksilver
Quicksilver

Reputation: 2700

Using next in foreach loop

I am looping through an array using foreach.

In a particular situation I need to know the value of the next element before iteration comes to that(like a prediction) element. For that I am planning to use the function next().

In documentation I just noticed that next() advances the internal array pointer forward.

next() behaves like current(), with one difference. It advances the internal array pointer one place forward before returning the element value. That means it returns the next array value and advances the internal array pointer by one.

If so will it affect my foreach loop?

Upvotes: 6

Views: 8970

Answers (3)

mlncn
mlncn

Reputation: 3366

next() doesn't affect foreach(), period.

In PHP 7.2 at least,

$values = ['a', 'b', 'c', 'd', 'e'];

foreach ($values as $value) {
  next($values);
  $two_ahead = next($values);
  echo("Two ahead: $two_ahead\n");
  echo("Current value: $value\n");
}

Produces:

Two ahead: c
Current value: a
Two ahead: e
Current value: b
Two ahead: 
Current value: c
Two ahead: 
Current value: d
Two ahead: 
Current value: e

Also note that the foreach loop does not affect the position of next, either. They're independent.

If you have an array with sequential numeric keys (the default), then ops' answer is best for what you're trying to do. I merely answered the question.

Upvotes: 3

liyakat
liyakat

Reputation: 11853

It will not affect your loop if you use it in this way

<?php

$lists = range('a', 'f');

foreach($lists as &$value) {
   $next = current($lists);
   echo 'value: ' . $value . "\n" . 'next: ' . $next . "\n\n";
}

OUTPUT

value: a next: b

value: b next: c

value: c next: d

value: d next: e

value: e next: f

value: f next:

Upvotes: 10

ops
ops

Reputation: 2049

Try this code:

$a=$array();
foreach($a as $key=>$var)
{
   if(isset($a[$key+1]))
      echo $a[$key+1];//next element
}

Upvotes: 1

Related Questions