Généralement, le parcours des éléments d'un tableau s'effectue par le truchement d'une boucle while et plus spécifiquement foreach.

La boucle while nécessite l'utilisation de trois fonctions supplémentaires :

  • la fonction reset permettant de réinitialiser le pointeur du tableau,
  • la fonction list contient une liste de variables correspondant aux éléments d'un tableau,
  • la fonction each retourne le couple clé/valeur en cours et pointe l'élément suivant du tableau.

La condition de la boucle while consiste à comparaître la liste de variables au couple clé/valeur en cours.

$tableau = array(val1, val2, ..., valN);

reset($tableau);
while (list(, $valeur) = each($tableau)){
  echo "Valeur: $valeur";
}

$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", 
                            "Jeudi", "Vendredi", "Samedi");

$i = 0;
reset($jour);
while (list(, $JJ) = each ($jour)){
  echo "La cellule n° ". $i . " : " . $JJ . "<br>";
  $i++;
}

La boucle foreach permet de parcourir tous les éléments d'un tableau à partir d'une structure de boucle simple.

$tableau = array(val1, val2, ..., valN);

foreach($tableau as $valeur){
  echo "Valeur: $valeur";
}

$jour = array("Dimanche", "Lundi", "Mardi", "Mercredi", 
                            "Jeudi", "Vendredi", "Samedi");
$i = 0;
foreach($jour as $JJ){
  echo "La cellule n° ". $i . " : " . $JJ . "<br>";
  $i++;
}

Le parcours d'un tableau associatif est réalisable en ajoutant avant la variable $valeur, la clé associée.

$tableau = array(clé1 => val1, clé2 => val2, ..., cléN => valN);

foreach($tableau as $clé => $valeur){
  echo "Valeur ($clé): $valeur";
}

$jour = array("Dimanche" => 7, "Lundi" => 1, "Mardi" => 2, 
                    "Mercredi" => 3, "Jeudi" => 4, 
                    "Vendredi" => 5, "Samedi" => 6);

foreach($jour as $sJJ => $nJJ){
  echo "Le jour de la semaine n° ". $nJJ . " : " . $sJJ . "<br>";
}

La boucle for parcourt essentiellement les tableaux indicés, en commençant l'itération à un indice précis (ex.: 0), jusqu'à la taille du tableau moins un. Le parcours s'effectue en incrémentant une variable qui permettra de désigner un élément précis du tableau.

$fichier = fopen('assurances.csv', 'r');

echo '<table border="1">\n';
while(!feof($fichier)){
  $enregistrement = fgetcsv($fichier, 1024, ';');
  if(substr($enregistrement[0], 0, 1) == '#') continue;
  echo '<tr>\n';
  $taille = sizeof($enregistrement);
  for ($i = 0; $i < $taille; $i++) {
    echo '\t<td>' . $enregistrement[$i] . '</td>\n';
  }
  echo '</tr>\n';
}
echo '</table>";

La fonction list() affecte une série de variables en fonction des éléments d'un tableau et de leur séquence.

$fichier = fopen('assurances.csv', 'r');

echo '<table border="1">\n';
while(!feof($fichier)){
  $enregistrement = fgetcsv($fichier, 1024, ';');
  if(substr($enregistrement[0], 0, 1) == '#') continue;
  list($nom, 
       $adresse,
       $telephone, 
       $fax) = $enregistrement;
  echo '\t<tr>\n';
  echo '\t\t<td>' . $nom . '</td>\n';
  echo '\t\t<td>' . $adresse . '</td>\n';
  echo '\t\t<td>' . $telephone . '</td>\n';
  echo '\t\t<td>' . $fax . '</td>\n';
  echo '\t</tr>\n';
}
echo '</table>";

L'affectation d'un tableau en utilisant une boucle est tout à fait envisageable. Il suffit seulement d'obtenir les valeurs à affecter au tableau, à partir d'un autre tableau, d'une source de données quelconque (fichier csv, base de données, xml, etc.) ou bien calculer à l'aide variables existantes dans le programme.

for($i = 0; $i < 10; $i++){
  $puissance[] = pow(2, $i); //Indiçage automatique
  $racine[$i] = sqrt($i); //Indiçage explicite
}