foreach è una simpatica struttura di controllo ereditata dal Perl che ci permette di attraversare un intero array senza preoccuparci di contatori e condizioni.

Ne esistono due versioni che sembrano simili ma sono profondamente diverse.
La prima associa ad ogni ciclo il valore dell’array ad una variabile. La seconda associa anche il nome della chiave dell’elemento corrente.

Quando si usa foreach si deve fare attenzione perché quando viene usata questa struttura il PHP crea una copia dell’array e opera su quello.
Questo può essere sia un bene che un male.
Quando si ha a che fare con array molto grandi si rischia di rallentare molto lo script, però con array di medie dimensioni questo metodo e piú veloce degli altri, è quindi consigliabile usarlo.

Vediamo qualche esempio.

<?php
 
$array_a = array (1, 2, 3, 4);
$array_b = array ('a', 'b', 'c', 'd');
 
/* Naviga un array stampando i valori contenuti */
 
foreach ($array_a as $elem)
{
  echo "$elem\n";
}
 
/* Naviga un array stampando i valori contenuti e
   anche le chiavi dei vari elementi */
 
foreach ($array_b as $key => $elem)
{
  echo "elem vale -> $elem \nKey vale -> $key";
}
 
?>

Spesso poi può essere utile usare la seconda forma di foreach e usare la chiave per accedere direttamente all’array vero e proprio senza dover usare la copia.

Da notare anche che il ciclo foreach inizia sempre dalla prima locazione dell’array e non c’è altro modo e la progressione è sempre 1.

vicius