Outils pour utilisateurs

Outils du site


php:ptb

Les Tableaux

1. Tableau numéroté ou indexé


Un tableau numéroté peut être créé de deux façons :

  • soit avec un index assigné automatiquement
  • soit avec un index assigné manuellement

a. Avec la fonction array() (index automatique)

<?php
// La fonction array() permet de créer un array avec un index 
         incdice      0          1         2           3          4       // Indice ou clé
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît'); // valeur
?>

clé = indice = index
valeur = la donnée stockée

b. Manuellement case par case (index manuel)
- sans la fonction array() mais alors avec des [ ] contenant les indices

<?php
$prenoms[0] = 'François';
$prenoms[1] = 'Michel';
$prenoms[2] = 'Nicole';
?>

Afficher une valeur d'une position du tableau
Exemple on veut afficher la valeur de l'indice 0 qui est la string 'François'

<?php
echo $prenoms[0];
?>
François


2. Tableau associatif


Les tableaux associatifs fonctionnent sur le même principe, sauf qu'au lieu de numéroter les cases, on va les étiqueter en leur donnant à chacune un nom différent.
La clé sera textuelle et non numérique. On ira donc rechercher la valeur non plus par le numéro d'indice mais par le nom du label.
On associera la clé à la valeur par le signe

a. La fonction array() permet aussi de créer un tableau associatif, mais on va mettre « l'étiquette » qui servira de clé devant chaque information :

<?php
$coordonnees = array (
  // étiquette   donnée
    'prenom' => 'François',  // clé associé à la valeur
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');
?>

On écrit une flèche pour dire « associé à ». Par exemple, on dit « ville » associée à « Marseille ».
« ville » étant l'indice et « Marseille » la donnée.

b. Entre crochets [ ]

<?php        //  clé         valeur     clé      valeur  
$coordonnees = ['prenom' => 'François','nom' => 'Dupont','adresse' => '3 Rue du Paradis','ville' => 'Marseille'];
?>

c. On peut aussi créer le tableau manuellement case par case.

<?php
          //  clé         valeur
$coordonnees['prenom'] = 'François';
$coordonnees['nom'] = 'Dupont';
$coordonnees['adresse'] = '3 Rue du Paradis';
$coordonnees['ville'] = 'Marseille';
?>

Afficher un tableau associatif
Pour afficher un élément, il suffit d'indiquer le nom de cet élément entre crochets, ainsi qu'entre guillemets ou apostrophes puisque l'étiquette du tableau associatif est un texte.

Pour extraire la ville, on devra taper :

<?php
echo $coordonnees['ville'];
?>
Marseille

Avoir le nombre d'indice totale, le détail de chaque données d'un tableau associatif: var_dump()


3. Tableau multidimensionnel


Le nombre de dimensions d'un tableau correspond aux nombres d'indices ou d'index dont nous avons besoin pour sélectionner un élément. Dans cet exemple ce tableau est à deux dimensions, il nous faudra donc deux indices (celui des lignes et des colonnes) pour sélectionner un élément. Donc on à bien un tableau à deux dimensions.

a. Multidimensionnel numéroté

<?php
$membres = array(
       //index  0       1   2    (colonne)
         array('Pierre',32,'pierre@gmail.com'), // tableau 0 (ligne)
         array('Jean',47,'jean@hotmail.com'),   // tableau 1
         array('Max',24,'max@thecat.com')       // tableau 2
); 
?>

Afficher un tableau multidimensionnel numéroté

<?php  // deux indices pour sélectionner un élément
  // élément 1                élément 2                                          élément 2
echo $membres[0][0] . ' a ' . $membres[0][1] . ' ans ' . ' et son mail est : ' . $membres[0][2];
?>
Pierre a 32 ans et son mail est : pierre@gmail.com

b. Parcourir un tableau multidimensionnel numéroté avec un for

<?php
for($ligne = 0; $ligne < 3; $ligne++){
      $membre_no = $ligne + 1;
      echo 'Membre numéro : ' . $membre_no . '<br />';
      echo '<ul>';
      for($col = 0; $col < 3; $col++){
         echo '<li>' . $membres[$ligne][$col] . '</li>';
      }
      echo '</ul>;   
   }
?>
Membre numéro 1
  • Pierre
  • 32
  • pierre@gmail.com

Membre numéro 2
  • Jean
  • 47
  • jean@hotmail.com
  
Membre numéro 3
  • Max
  • 24
  • max@thecat.com

Vérifier un tableau multidimensionnel avec la fonction print_r()

<?php
echo '<pre>';
print_r($membres);
echo '</pre>';
?>
Array
(
    [0] => Array
        (
            [0] => Pierre
            [1] => 32
            [2] => pierre@gmail.com
        )

    [1] => Array
        (
            [0] => Jean
            [1] => 47
            [2] => jean@hotmail.com
        )

    [2] => Array
        (
            [0] => Max
            [1] => 24
            [2] => max@thecat.com
        )
)



Quand utiliser un array numéroté et quand utiliser un array associatif ?
Comme on l'a vu dans les exemples, ils ne servent pas à stocker la même chose

- Les arrays numérotés permettent de stocker une série d'éléments du même type, comme des prénoms.
Chaque élément du tableau contiendra alors un prénom.

- Les arrays associatifs permettent de découper une donnée en plusieurs sous-éléments.
Par exemple, une adresse peut être découpée en nom, prénom, nom de rue, ville …

4. Parcourir tout un tableau, trois possibilités.


  • la boucle for (impossible pour un tableau associatif à cause de la clé textuelle)
  • la boucle foreach()
  • la fonction print_r() (utilisé uniquement pour le débogage)

a. La boucle for
Il est très simple de parcourir un tableau numéroté avec une boucle for.
En effet, puisqu'il est numéroté à partir de 0, on peut faire une boucle for qui incrémente un compteur à partir de 0 :

<?php
// On crée notre array $prenoms
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
 
// Puis on fait une boucle pour tout afficher :
for ($numero = 0; $numero < 5; $numero++)
{
    echo $prenoms[$numero] . '<br />'; // affichera $prenoms[0], $prenoms[1] etc.
}
?>

b. La boucle foreach
Cette boucle va passer en revue chaque ligne du tableau. Lors de chaque passage, elle va mettre la valeur de cette ligne dans un variable temporaire dans l’exemple ci-dessous $element.

Avec un tableau numéroté

<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
 
foreach($prenoms as $element) // as = alias  $element est la variable temporaire
{
    echo $element . '<br />'; // affichera $prenoms[0], $prenoms[1] etc. 
}                             // (contenu de la variable temporaire $element)
?>   

Avec un tableau associatif
À chaque tour de boucle, la valeur de l'élément suivant est mise dans la variable $element. On peut donc utiliser $element uniquement à l'intérieur de la boucle afin d'afficher l'élément en cours.

<?php
$coordonnees = array (                   // A chaque passage de la boucle 
    'prenom' => 'François',              // 0 $element contiendra 'François'
    'nom' => 'Dupont',                   // 1 $element contiendra 'Dupont'
    'adresse' => '3 Rue du Paradis',     // 2 $element contiendra '3 Rue du Paradis'
    'ville' => 'Marseille');             // 3 $element contiendra 'Marseille'
 
foreach($coordonnees as $element) // prend uniquement la valeur
{
    echo $element . '<br />';
}
?>

Explication
foreach va mettre tour à tour dans la variable alias $element le prénom, le nom, l'adresse et la ville qui sont contenus dans l'array $coordonnees.

On met donc entre parenthèses :
- d'abord le nom de l'array (ici $coordonnees) ;
- ensuite le mot-clé as (qui signifie quelque chose comme « en tant que ou alias ») ;
- enfin, le nom d'une variable que vous choisissez et qui va contenir tour à tour chacun des éléments de l'array (ici $element).

c. Récupérer la clé + la valeur de l'élément.
Pour se faire on aura besoin de deux variables:
- $cle variable qui contiendra la clé de l'élément (« prenom », « nom », etc.).
- $element variable qui contiendra la valeur de l'élément en cours (« François », « Dupont », etc.).

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');
 
foreach($coordonnees as $cle => $element) // prend la cle et son association la valeur
 
{
    echo '[' . $cle . '] vaut ' . $element . '<br />';
}
?>

Explication
A chaque tours de boucle, foreach va dans l'array $coordonnees mettre la clé dans la variable temporaire $cle et associer la valeur dans une variable temporaire $element
On a ainsi dans la boucle la clé ET la valeur.

d. Afficher rapidement un array avec print_r
- c'est un echo spécialisé pour les array
- permet de voir rapidement tout le contenu d'un array, clé + élément
- doit être utilisé avec la balise html <pre> pour un retour á la ligne
- est utilisée pour le débogage

La commande print_r ne renvoie pas de code HTML comme <br /> pour les retours à la ligne.
Pour voir les retour à la ligne il faut utiliser la balise HTML <pre> pour un affichage correct.
La balise <pre> définit le texte préformaté.

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');
 
echo '<pre>';
print_r($coordonnees);
echo '</pre>';
?>
Array
(
    [prenom] => François
    [nom] => Dupont
    [adresse] => 3 Rue du Paradis
    [ville] => Marseille
)


5. Rechercher l'info dans un tableau


3 types de recherches :

  1. fonction array_key_exists() : permet de vérifier si une clé existe dans le tableau
  2. fonction in_array() : permet de vérifier si une valeur existe dans le tableau
  3. fonction array_search() : permet de récupérer la clé d'une valeur dans un tableau

1. Vérifier si une clé existe : array_key_exists()
La fonction array_key_exists() va parcourir le tableau et vérifier si il contient la clé que l'on recherche.
Si la clé existe il renverra le booléen true sinon si il ne l'a trouve pas il renverra false.

Procédure
On lui donne d'abord le nom de la clé à rechercher et ensuite le nom du tableau dans lequel la recherche doit être effectuée.

<?php array_key_exists('cle', $array); ?>

La fonction array_key_exists() renverra true ou false ce qui nous permettra de l'utiliser dans un if

<?php
 
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');
 
if (array_key_exists('nom', $coordonnees))
{
    echo 'La clé "nom" se trouve dans les coordonnées !';
}
 
if (array_key_exists('pays', $coordonnees))
{
    echo 'La clé "pays" se trouve dans les coordonnées !';
}
?>

2. Vérifier si une valeur existe : in_array
C'est la même chose mais ici on recherche dans les valeurs.
in_array renverra true si la valeur se trouve dans le tableau et false si elle ne s'y trouve pas.

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
 
if (in_array('Myrtille', $fruits)) // si la valeur 'Myrtille' se trouve dans le tableau $fruit
{
    echo 'La valeur "Myrtille" se trouve dans les fruits !';
}
 
if (in_array('Cerise', $fruits)) // si la valeur 'Cerise' se trouve dans le tableau $fruit
{
    echo 'La valeur "Cerise" se trouve dans les fruits !';
}
?>

3. Récupérer la clé d'une valeur dans un tableau : array_search()
Ça fonctionne comme in_array() à part que ici on récupère la clé le numéro indice à partir de la valeur.
- si la fonction array_search() reverra la clé correspondant à la valeur (c'est à dire le numéro d'indice pour un tableau numéroté et le nom de la clé pour un tableau associatif)
- si la fonction array_search() ne trouve pas la valeur elle reverra false.

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
 
$position = array_search('Fraise', $fruits); // cherche la valeur 'Fraise' dans $fruits et renvoie son indice
echo '"Fraise" se trouve en position ' . $position . '<br />';
 
$position = array_search('Banane', $fruits); // cherche la valeur 'Banane' dans $fruits et renvoie son indice
echo '"Banane" se trouve en position ' . $position; 
?>


6. Opérations sur les tableaux


Créer un tableau a partir d'une chaine de caractère
La fonction explode() : Coupe une chaîne en segments

$auto = "alfa-bmw-citroen";  // chaine de caractere
print_r(explode('-',$auto)); // la fonction explode(), lorsqu'il trouve un caractère '-' il scinde 
Array ( [0] => alfa [1] => bmw [2] => citroen ) 

Créer une chaine de caractères à partir d'un tableau
La fonction implode() : Coupe les valeurs en chaine de caractères

<?php
$colors = ['bleu','vert','jaune','orange','rouge'];
print_r(implode(',',$colors)); // la fonction implode(), lorsqu'il trouve un caractère ',' il scinde 
?>
bleu,vert,jaune,orange,rouge

Compter les indices, clés, index d'un tableau
La fonction count() compte le nombre d'index dans un tableau, fonctionne uniquement pour un tableau numéroté.

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
print_r(count($fruits));
?>
5

Retour d'un niveau
Retour à l'accueil

php/ptb.txt · Dernière modification : de 127.0.0.1