Les tableaux associatifs en PHP
Les tableaux associatifs en PHP
-
Objectifs
- Connaitre les tableaux associatifs
-
Présentation
- Un tableau associatif est un tableau que ces indexes sont crées par l’utilisateur et qu’il va les associer à chaque valeur.
- Un tableau associatif est un ensemble de couples (clé, valeur). Une clé est soit un entier soit une chaîne de caractères. Une valeur est une donnée quelconque (booléen, numérique, chaîne de caractères..). La valeur d’un élément d’une collection dépend donc du couple (nom de la collection, clé).
-
Création d’un tableau associatif
- Pour créer un tableau associatif en PHP il existe plusieurs méthodes ou écritures:
-
Première écriture
-
Syntaxe:
- $nom_tableau= array(cle1 => valeur1,cle2 => valeur2,cle3 => valeur3…..)
-
Exemple:
-
Description
- Ce tableau est une variable en lui même puisqu’il commence par $
- Les éléments du tableau peuvent être de même type ou de type différent
<?php
$semaine=array('prmier_jour'=>'lundi','deuxième_jour'=>'mardi','troisième_jour'=>'mercredi','quatrième_jour'=>'jeudi',
'cinquième_jour'=>'vendredi','sixième_jour'=>'samedi','septième_jour'=>'dimanche');
?>
Deuxième écriture
-
Syntaxe:4
- $nom_tableau= array ();
- $nom_tableau [‘clé1’]= valeur1;
- $nom_tableau [‘clé2’]= valeur2;
- $nom_tableau [‘clé3’]= valeur3;
-
Exemple:
-
Description
- Pour cette écriture les indexes sont implicites et c’est le compilateur qui en déduit les valeurs qui commencent par défaut de 0 et s’incrémentent de 1.
- $semaine=array(); est facultative. Mais le fait de la déclarer est vu comme une bonne habitude.
- Ici on a crée un tableau vide puis on l’a rempli par la suite.
<?php
$semaine=array();
$semaine['prmier_jour']='lundi';
$semaine['deuxième_jour']='mardi';
$semaine['troisième_jour']='mercredi';
$semaine['quatrième_jour']='jeudi';
$semaine['cinquième_jour']='vendredi';
$semaine['sixième_jour']='samedi';
$semaine['septième_jour']='dimanche';
?>
Troisième écriture
-
Syntaxe:
- $nom_tableau= [cle1 => valeur1,cle2 => valeur2,cle3 => valeur3…..]
-
Exemple:
-
Description
- C’est l’écriture le plus simplifiée
<?php
$semaine=['prmier_jour'=>'lundi','deuxième_jour'=>'mardi','troisième_jour'=>'mercredi','quatrième_jour'=>'jeudi',
'cinquième_jour'=>'vendredi','sixième_jour'=>'samedi','septième_jour'=>'dimanche'];
?>
Lecture d’un tableau associatif
-
Lecture d’une valeur
- Pour lire une valeur d’un tableau indexé, on appelle la variable avec, entre les crochets [ ], le numéro de la clé correspondant à la valeur.
-
Lecture de plusieurs valeurs
- Pour lire tous les élément d’un tableau, la solution c’est à utiliser la boucle
for
ou la bouclewhile
. Cependant, PHP inclue une structure de contrôle qui s’applique spécialement aux tableaux. Il s’agit de la structureforeach
. -
Affichage avec bootstrap5
<?php
$semaine=['prmier_jour'=>'lundi','deuxième_jour'=>'mardi','troisième_jour'=>'mercredi','quatrième_jour'=>'jeudi','cinquième_jour'=>'vendredi','sixième_jour'=>'samedi','septième_jour'=>'dimanche'];
echo $semaine['prmier_jour']; //Affiche lundi
?>
<?php
$semaine=array('prmier_jour'=>'lundi','deuxième_jour'=>'mardi',
'troisième_jour'=>'mercredi','quatrième_jour'=>'jeudi',
'cinquième_jour'=>'vendredi','sixième_jour'=>'samedi',
'septième_jour'=>'dimanche');
foreach ($semaine as $jour)
{ //affiche jour
echo($jour."</br>");
}
echo "</br></br>";
foreach ($semaine as $jour =>$value)
{ //affiche prmier_jour Lundi
echo ("<b>".$jour."</b> ".$value."</br>");
}
?>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>Hello, world!</title>
</head>
<body>
<?php
$semaine=array('prmier_jour'=>'lundi','deuxième_jour'=>'mardi',
'troisième_jour'=>'mercredi','quatrième_jour'=>'jeudi',
'cinquième_jour'=>'vendredi','sixième_jour'=>'samedi',
'septième_jour'=>'dimanche');
?>
<div class="container">
<table class="table table-striped table-hover">
<thead class="table-light">
<tr>
<th>Jours</th>
</tr>
</thead>
<tbody>
<?php
$classesTableau = [
"table-primary",
"table-secondary",
"table-success",
"table-danger",
"table-warning",
"table-info",
"table-light",
"table-dark"
];
$j=0;
foreach ($semaine as $jour)
{
if($j>=count($classesTableau))$j=0;
echo "<tr class='".$classesTableau[$j]."'>";
echo("<td>".$jour."</td>");
echo "</tr>";
$j++;
}
?>
</tbody>
</table>
<table class="table table-striped table-hover">
<thead class="table-light">
<tr>
<th>Valeurs</th>
<th>Jours</th>
</tr>
</thead>
<tbody>
<?php
echo "</br></br>";
foreach ($semaine as $jour =>$value)
{
if($j>=count($classesTableau))$j=0;
echo "<tr class='".$classesTableau[$j]."'>";
echo("<td>".$jour."</td>");
echo("<td>".$value."</td>");
echo "</tr>";
$j++;
}
?>
</tbody>
</table>
</div>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
-->
</body>
</html>
Modifier une valeur dans un tableau associatif
- Pour modifier une valeur dans un tableau associatif en PHP, vous devez spécifier la clé de l’élément que vous souhaitez mettre à jour, puis lui affecter la nouvelle valeur.
- Supposons que vous ayez un tableau associatif appelé $personne :
<?php
$personne = array(
'nom' => 'Doe',
'prénom' => 'John',
'âge' => 30
);
?>
<?php$personne['âge'] = 31;?>
Applications
-
Exercice 01
-
Énoncé
- Créez un fichier PHP nommé data.php contenant un tableau multidimensionnel associatif avec les noms de 10 personnes et des informations telles que le prénom, la ville de résidence et l’âge de chaque personne.
- Créez un fichier PHP nommé table.php pour générer la page HTML qui affiche les données de manière structurée. Incluez le tableau de données et le CSS dans ce fichier.
- Si vous n’avez pas utilisé bootstrap 5, créez un fichier CSS nommé styles.css pour styliser le tableau HTML.
- L’objectif est de créer une page HTML qui affiche les données du tableau multidimensionnel associatif de manière structurée et attrayante en utilisant Bootstrap 5 ou CSS. Le fichier data.php doit contenir des informations pour au moins 10 personnes, avec leur nom, prénom, ville de résidence et âge. Le fichier table.php doit inclure le tableau HTML généré à partir des données de data.php, et le fichier styles.css doit être utilisé pour styliser le tableau. Cette approche facilitera la gestion, la maintenance et la personnalisation de chaque aspect de l’exercice.
- page data.php
- page table.php
- page styles.css
-
Exercice 02
-
Énoncé
- Créer un tableau associant à chaque mois de l’année le nombre de jours du mois. (On supposera que l’année n’est pas bissextile.)
- Afficher, sous forme d’un tableau de deux colonnes en utilisant le framework Bootstrap, le nombre de jours de chaque mois.
-
Exercice 03
-
Énoncé
- Créer un tableau en PHP pour afficher les informations d’étudiants à partir d’un tableau multidimensionnel associatif. Chaque étudiant aura les informations suivantes :
- Nom
- Âge
- Notes dans plusieurs matières (Mathématiques, Science, et Histoire)
Solution
<php
$personnes = array(
"Ahmed" => array("prénom" => "Ahmed", "ville" => "Tunis", "âge" => 30),
"Sofia" => array("prénom" => "Sofia", "ville" => "Sousse", "âge" => 25),
"Karim" => array("prénom" => "Karim", "ville" => "Sfax", "âge" => 28),
"Leila" => array("prénom" => "Leila", "ville" => "Nabeul", "âge" => 33),
"Youssef" => array("prénom" => "Youssef", "ville" => "Kairouan", "âge" => 29),
"Nour" => array("prénom" => "Nour", "ville" => "Tozeur", "âge" => 26),
"Inès" => array("prénom" => "Inès", "ville" => "Bizerte", "âge" => 31),
"Mehdi" => array("prénom" => "Mehdi", "ville" => "Mahdia", "âge" => 35),
"Amina" => array("prénom" => "Amina", "ville" => "Monastir", "âge" => 27),
"Khalil" => array("prénom" => "Khalil", "ville" => "Gabes", "âge" => 32),
); ?>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>Hello, world!</title>
</head>
<body>
<div class="container">
<h1>Tableau des Personnes </h1>
<table class="table table-striped ">
<thead class="table-dark">
<tr>
<th>Nom </th>
<th>Prénom </th>
<th>Ville de résidence </th>
<th>Âge </th>
</tr>
</thead>
<tbody>
<?php include 'data.php'; ?>
<?php foreach ($personnes as $nom => $info): ?>
<tr>
<td><?php echo $nom; ?></td>
<td><?php echo $info['prénom']; ?></td>
<td><?php echo $info['ville']; ?></td>
<td><?php echo $info['âge']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<!-- Option 2: Separate Popper and Bootstrap JS -->
<!--
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
-->
</body>
</html>
<php table {
border-collapse: collapse;
width: 60%;
margin: 20px auto;
}
th, td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f2f2f2;
}
tr:nth-child(odd) {
background-color: #fff;
}
?>
- Références:
- Livre PHP7 Cours et exercices Jean Engels 2e édition