loop foreach e referência de & $ value

Por que um loop foreach vazio pode alterar o resultado.

Eu tenho o seguinte código:

$variable = [1,2,3,4];
foreach ($variable  as $key => &$value) 
  $value ++;

var_dump($variable);

O resultado que recebo é:

array (size=4)
  0 => int 2
  1 => int 3
  2 => int 4
  3 => &int 5

Agora, quando adiciono um loop foreach vazio como este:

$variable  = [1,2,3,4];
foreach ($variable  as $key => &$value) 
  $value ++;

foreach ($variable  as $key => $value);
  var_dump($variable);

Eu entendi isso :

array (size=4)
  0 => int 2
  1 => int 3
  2 => int 4
  3 => &int 4

alguém pode me explicar por que o último elemento não muda quando adiciono o segundo loop vazio e por que há um & na frente do último elemento?