[PHP] - Boucle Foreach

Répondre
Avatar du membre
LM2I_Laurent
Administrateur - Site Admin
Messages : 282
Enregistré le : jeu. 27 août 2009 17:00

[PHP] - Boucle Foreach

Message par LM2I_Laurent »

PHP - Boucle Foreach

La boucle Foreach

Code : Tout sélectionner

<?php 
$array = array( 1, 1, 2, 3, 5, 8, 13 ); 
?>
Foreach se décline en deux versions, examinons d'abord la première:

Code : Tout sélectionner

<?php 
foreach( $array as $value ) 
  echo $value . '<br />'; 
?>
Ainsi, nous parcourons le tableau $array et la valeur de l'élément courant est copié dans $value, qui est ensuite affiché.

Code : Tout sélectionner

 <?php 
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3'); 
?>
Contrairement au tableau précédant, les indices des éléments ne sont pas des nombres (0, 1, 2, ...) mais des chaînes de caractères (on appelle un tel tableau un tableau associatif). Ainsi, si je veux accéder au deuxième élément, je dois procéder comme suit: $array['deuxieme'] . Il est donc impossible ici d'utiliser for. Par contre, avec foreach, aucun problème:

Code : Tout sélectionner

<?php 
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3'); 

foreach( $array as $value ) // on parcourt $array, la valeur de l'item courant est copiée dans $value 
  echo $value . '<br />'; // affichage 
?>

Affiche: 
N° 1 
N° 2 
N° 3 
La seconde version de foreach permet de connaître, en plus de la valeur de l'élément courant, sa clé:

Code : Tout sélectionner

<?php 
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3'); 

foreach( $array as $key => $value ) 
  echo 'Cet élément a pour clé "' . $key . '" et pour valeur "' . $value . '"<br />'; 
?>
Dans ce cas, on parcourt le tableau $array et la clé de l'élément courant est copiée dans $key tandis que sa valeur est copiée dans $value!

Cette boucle pourrait nous permettre d'afficher tous les élément du tableau superglobal $_SERVER:

Code : Tout sélectionner

<?php 
foreach( $_SERVER as $key => $value ) 
  echo '$_SERVER['' . $key . ''] =' . $value . '<br />'; 
?> 

Affiche: 
$_SERVER['HTTP_HOST'] =localhost 
$_SERVER['HTTP_USER_AGENT'] =Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 
$_SERVER['HTTP_ACCEPT'] =text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
$_SERVER['HTTP_ACCEPT_LANGUAGE'] =fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 
$_SERVER['HTTP_ACCEPT_ENCODING'] =gzip,deflate 
$_SERVER['HTTP_ACCEPT_CHARSET'] =ISO-8859-1,utf-8;q=0.7,*;q=0.7 
$_SERVER['HTTP_KEEP_ALIVE'] =300 
...
Ce code vous permettra d'afficher le contenu de $_POST, $_GET ou encore $_SESSION.

On peut aussi imbriquer des boucles foreach, regardez comment on peut ainsi afficher le contenu d'un tableau à deux dimensions:

Code : Tout sélectionner

<?php 
$array = array( 'fruits' => array( 'pommes', 'tomates', 'abricots' ), 
                'animaux' => array( 'chats', 'chiens' ), 
                'pays' => array( 'Suisse', 'France', 'Angleterre' ) ); 

foreach( $array as $key => $value ) 
{ 
  echo $key . ': <br />'; 
  
  foreach( $value as $valeur ) 
    echo '  ' . $valeur . '<br />'; 
    
  echo '<br />'; 
} 
?> 

Affiche: 
fruits: 
  pommes 
  tomates 
  abricots 

animaux: 
  chats 
  chiens 

pays: 
  Suisse 
  France 
  Angleterre
Le premier foreach parcourt le tableau principal, les valeurs de $key sont successivement 'fruits', 'animaux' et 'pays' tandis que $value contient le tableau qui contient les exemples, c'est donc $value que l'on prend comme tableau pour le deuxième foreach!


@+
Laurent
Image
Webmaster
http://www.lm2i.fr
http://www.lm2i.eu

Image Image Image Image
.
Répondre