PHP & MySQL

Les tableaux en php - 2ème Partie

Le 30 novembre 2007 à 0:11 par Tom

La deuxième partie (Les tableaux en php - 1ère partie) de ce long tutoriel sur les tableaux (array) concerne les tableaux multi-dimensionnels (ne vous inquiétez pas, même si le nom peut vous perturber, vous allez voir c’est très simple).

Pour définir les tableaux multi-dimensionnels, nous allons dire que ce sont des tableaux de tableaux.
En effet, nous avons vu plus haut que nous pouvions créer un tableau simple. Mais si vous utiliser un très gros tableau et le garder facilement utilisable, nous allons devoir créer des tableaux “de tableaux” (comprenez multi-dimensionnels).
Et pourquoi faire compliqué, quand on peut faire simple :)
Un tableau “de tableau”, s’écrit de cette façon $array[’tableau’][’donnee’];
Aussi, vous pouvez même faire $array[’tableau1′][’tableau2′][’tableau3′][’donnee’]; mais à ce stade, un tableau multi-dimensionnel n’est plus conseillé :p et vous comprenez pourquoi.

Nous allons utiliser l’exemple d’un fichier de configuration.
Imaginez un fichier de configuration comme celui là :

  1.  
  2. // Base de données
  3. $sql_host = "localhost";
  4. $sql_user = "root";
  5. $sql_pwd = "";
  6. $sql_base = "demo";
  7.  
  8. // Configuration du site
  9. $site_name = "Mon site";
  10. $site_url = "http://urldemonsite.com/";
  11. $template = "monsite"; // Pourquoi pas

Vous ne voyez pas comme ce code peut-être désordre, et encore il s’agit d’un fichier de configuration “basique”. Pour améliorer ce bout de code, nous allons utiliser des tableaux multi-dimensionnels car en tant que programmeurs, nous sommes perfectionnistes :).

Revenons au code de notre fichier de configuration, avec un tableau multi-dimensionnel nous aurions ceci :

  1.  
  2. // Base de données
  3. $config[’sql’][‘host’] = "localhost";
  4. $config[’sql’][‘user’] = "root";
  5. $config[’sql’][‘pwd’] = "";
  6. $config[’sql’][‘base’] = "demo";
  7.  
  8. // Configuration du site
  9. $config[’site’][‘name’] = "Mon site";
  10. $config[’site’][‘url’] = "http://urldemonsite.com/";
  11. $config[’site’][‘template’] = "monsite"; // Pourquoi pas :D

Et voilà, dans votre variable $config sont stockées toutes les infos concernant la configuration de votre site, et ceci de façon très claire, la configuration de la base de donnée est stockée dans $config[’sql’] et celle du site dans $config[’site’]…

Pour faire le listing de ces infos, nous allons encore utiliser la boucle foreach(), cette dernière étant très utile pour ce type de tableaux.
Mise en situation : vous avez un tableau $members avec une liste des membres de votre site. Ce tableau est un tableau multi-dimensionnel car il est fait de la façon suivante :

  1.  
  2. print_r($members);
  3.  
  4. /*
  5. Array {
  6.   [124] => Array { // 124 étant l’identifiant de l’utilisateur)
  7.      [user_login]=>"Tom",
  8.      [user_email]=>"contact at tomclarks dot net" }
  9.   [245] => Array {
  10.      [user_login]=>"Chris",
  11.      [user_email]=>"bleebot at gmail dot com" }
  12. }
  13. */

Imaginons que nous souhaiterions faire une liste des membres :

  1.  
  2. <ul>";
  3. foreach($members as $user_id=>$user_value) {
  4.   echo "
  5.         <li>#{$user_id} : {$user_login} ({$user_email})</li>
  6. ";
  7. }
  8. echo "</ul>
  9. ";
  10.  
  11. /* Résultat :
  12. · #124 : Tom (contact at tomclarks dot net)
  13. · #245 : Chris (bleebot at gmail dot com)
  14. */

Et comme pour finir mon autre article sur les tableaux en php, je vous conseille d’aller consulter la documentation du site php.net sur les tableaux, j’insiste car cette doc est très bien écrite et on y trouve plein de fonction utiles :
PHP: Tableaux

Bon courage à vous :) Moi je file vous préparer une 3ème Partie sur ces tableaux :)
N’hésitez surtout pas à poser vos questions ou remarques :).

Un commentaire »

Gravatar

Commentaire de j.ducastel

le 7 décembre 2007 à 16:05

Et pour un fichier de config, il y a encore plus propre : un fichier au format INI qui sera recuperé dans un tableau (à deux dimensions au besoin) via parse_ini_file()…

Laisser un commentaire

Votre Nom

Votre E-mail (obligatoire mais ne sera pas publié)

Votre Site ou blog

Votre commentaire

Valid XHTML 1.0 Transitional