Web Dynamique - PHP - Chap 2 - Tableaux
Web Dynamique - PHP - Chap 2 - Tableaux
Web Dynamique - PHP - Chap 2 - Tableaux
Tableaux
---------------
PHP: Tableaux
• Les tableau représentent la structure de données la plus
importante du langage PHP.
• Les tableaux possèdent une seule dimension.
• La seule manière de construire des tableaux multidimensionnel
est d’utiliser des tableaux de pointeurs.
• Les éléments d’un tableau peuvent appartenir à des types
distincts.
PHP: Tableaux
• L’indexation d’un tableau commence toujours à l’indice 0.
• Il n’y a pas de limite pour la dimension d’un tableau.
• La fonction count() pour avoir le nombre d’éléments d’un
tableau.
• Deux types d’indexation:
o indexage numérique
o indexage associatif
PHP: Tableaux
• Indexation numérique
o Indexation explicite
$couleur[0]="blanc", $couleur[1]="bleu", $couleur[2]="rouge";
PHP: Tableaux
• Indexation numérique
o Indexation explicite
$couleur[0]="blanc", $couleur[1]="bleu", $couleur[2]="rouge";
o Indexation automatique
$couleur[] = "blanc", $couleur[] = "bleu", $couleur[] = "rouge";
PHP: Tableaux
• Indexation numérique
o Indexation explicite
$couleur[0]="blanc", $couleur[1]="bleu", $couleur[2]="rouge";
o Indexation automatique
$couleur[] = "blanc", $couleur[] = "bleu", $couleur[] = "rouge";
o Avec array sans indice
$couleur = array("blanc", "bleu", "rouge");
PHP: Tableaux
• Indexation numérique
o Indexation explicite
$couleur[0]="blanc", $couleur[1]="bleu", $couleur[2]="rouge";
o Indexation automatique
$couleur[] = "blanc", $couleur[] = "bleu", $couleur[] = "rouge";
o Avec array sans indice
$couleur = array("blanc", "bleu", "rouge");
o Avec array + indice
$couleur = array(5=>"blanc", "bleu", "rouge");
PHP: Tableaux
• Indexation associative (hachage) : Les éléments sont référencés
par des chaînes de caractères associatives en guise de nom (la
clé d’index).
-------------------------------
$tableau["indice"] = valeur;
$jour["Dimanche"] = 7; $jour["Vendredi"] = "Fin de semaine";
-------------------------------
PHP: Tableaux
• Indexation associative (hachage) : Les éléments sont référencés
par des chaînes de caractères associatives en guise de nom (la
clé d’index).
-------------------------------
$tableau["indice"] = valeur;
$jour["Dimanche"] = 7; $jour["Vendredi"] = "Fin de semaine";
-------------------------------
$tableau = array(ind0 => val0, ind1 => val1,..., indN => valN);
$jour = array("Lundi" => 1, "Mardi" => 2, "Mercredi" => 3);
-------------------------------
PHP: Tableaux
• Indexation associative (hachage) : Les éléments sont référencés
par des chaînes de caractères associatives en guise de nom (la
clé d’index).
-------------------------------
$tableau["indice"] = valeur;
$jour["Dimanche"] = 7; $jour["Vendredi"] = "Fin de semaine";
-------------------------------
$tableau = array(ind0 => val0, ind1 => val1,..., indN => valN);
$jour = array("Lundi" => 1, "Mardi" => 2, "Mercredi" => 3);
-------------------------------
$variable = $tableau["indice"];
$JJ = $jour["Lundi"]; //affecte 1 à $JJ
echo $jour["Lundi"]; //retourne la valeur 1
PHP: Tableaux
<?php
$couleur[] = "blanc"; $couleur[] = "bleu";
$couleur[] = "rouge";
echo "$couleur[2]";
$couleur2 = array("blanc", "bleu", "rouge");
echo "<br /> $couleur2[2]";
$couleur3 = array(5=> "blanc", "bleu", "rouge");
echo "<br /> $couleur3[6]";
$personne = array("nom"=> "Alaoui", "prenom"=> "Ahmed");
echo "<br />$personne[prenom]";
$couleur4 = array(1=> "blanc", 3=> "bleu", 5=> "rouge");
echo "<br />$couleur4[5]";
?>
PHP: Tableaux
• Pas d'outils pour créer directement des tableaux
multidimensionnels.
• L'imbrication des tableaux est possible.
$tab1 = array(Val0, Val1,..., ValN);
$tab2 = array(Val0, Val1,..., ValN);
// Création d'un tableau à deux dimensions
$tableau = array($tab1, $tab2);
PHP: Tableaux
• Tableaux multidimensionnels :
<?php
$mois = array ("Jan", "Fév", "Mar", "Avr", "Mai", "Jun" ,"Jul",
"Aou", "Sep", "Oct", "Nov", "Déc");
$jour = array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam");
$Tdate = array($mois, $jour); // Tableaux à 2 dimensions
?>
PHP: Tableaux
• Tableaux multidimensionnels :
<?php
$mois = array ("Jan", "Fév", "Mar", "Avr", "Mai", "Jun" ,"Jul",
"Aou", "Sep", "Oct", "Nov", "Déc");
$jour = array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam");
$Tdate = array($mois, $jour); // Tableaux à 2 dimensions
// $variable = $tableau[indice][indice];
$M = $Tdate[0][0];
echo $Tdate[1][5] . " 7 " . $Tdate[0][2] . "2002";
?>
PHP: Tableaux
• Lecture des éléments d’un tableau : Avec une boucle for
<?php
for ($i=0; $i<count($tab) ; $i++){
if ($tab[$i]== "a") echo $tab[$i], "<br/>";
}
?>
<?php
$jour = array("Dim" => 7, "Lun" => 1, "Mar" => 2, "Mer"
=> 3, "Jeu" => 4, "Ven" => 5, "Sam" => 6);
foreach($jour as $NomJ => $NumJ) {
echo "Le jour n°".$.NumJ" : ".$NomJ."<br>";
}
?>
PHP: Tableaux
• Lecture des éléments d’un tableau en utilisant la fonction
var_dump() :
<?php
$a = array(1, 2, array("a", "b", "c"));
$b = array("Dim" => 7, "Lun" => 1, "Mar" => 2, "Mer"
=> 3, "Jeu" => 4, "Ven" => 5, "Sam" => 6);
var_dump($a);
var_dump($b);
?>
PHP: Tri des Tableaux
• La fonction sort() effectue un tri sur les valeurs des éléments
d’un tableau selon un critère ( "a" est après "Z" et "10" est
avant "9").
• Le tableau initial est modifié et non-récupérables dans son
ordre original .
• Pour les tableaux associatifs, les clés seront perdues et
remplacées par un indice créé après le tri et commençant à 0 .
PHP: Tri des Tableaux
• La fonction rsort() effectue la même action mais en ordre
inverse des codes ASCII.
• La fonction asort() trie également les valeurs selon le critère
des codes ASCII, mais en préservant les clés pour les tableaux
associatifs.
• La fonction arsort() la même action mais en ordre inverse des
codes ASCII.
• la fonction natcasesort() effectue un tri en ordre alphabétique
non selon code ASCII ("a" est avant "z" et "10" est après "9").
PHP: Tri des Tableaux
• La fonction ksort() trie les clés du tableau selon le critère des
codes ASCII, et préserve les associations clé /valeur.
• La fonction krsort() effectue la même action mais en ordre
inverse des codes ASCII.
<?php
$tab = array ("1622"=>"Molière","1802"=>"Hugo","1920"=>"Vian");
ksort ($tab);
foreach ($tab as $cle=>$val) {
echo "<b> Clé : $cle; Valeur : $val </b> <br />";
}
?>
PHP: Fonctions des Tableaux
• $tableau = array_count_values($variable);
retourne un tableau comptant le nombre d'occurrences des
valeurs d'un tableau.
• $tableau = array_diff($var_1, $var_2, ..., $var_N);
retourne un tableau contenant les valeurs différentes entre
deux ou plusieurs tableaux, qui sont présents dans le premier
tableau mais pas dans les autres.
• $tableau = array_intersect($var_1, $var_2, ..., $var_N);
retourne un tableau contenant les enregistrements communs
aux tableaux entrés en argument.
PHP: Fonctions des Tableaux
• $tableau = array_flip($variable);
intervertit les paires clé/valeur dans un tableau.
• $tableau = array_keys($variable,$valeur);
retourne toutes les clés d'un tableau, ou les emplacements
d'une valeur dans un tableau.
• $tableau = array_map('fonction‘,$var_1 , $var_2, ..., $var_N);
<?php
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
Var_dump($result);
$result = array_pad($input, -7, -1);
Var_dump($result);
?>
PHP: Fonctions des Tableaux
• $tableau = array_filter($variable, "fonction");
retourne un tableau contenant les enregistrements filtrés d'un
tableau à partir d'une fonction.
<?php
function impair($var){ return ($var % 2 == 1); }
function pair($var){ return ($var % 2 == 0); }
$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array (6, 7, 8, 9, 10, 11, 12);
echo "Impairs :\n"; print_r(array_filter($array1, "impair"));
echo "Pairs :\n"; print_r(array_filter($array2, "pair"));
?>
PHP: Fonctions des Tableaux
Imaginez que vous avez un tableau associatif en PHP contenant des informations sur
des employés d'une entreprise. Chaque entrée du tableau a les propriétés suivantes :
id (identifiant de l'employé, un nombre entier unique pour chaque employé).
nom (nom de l'employé).
salaire (salaire de l'employé en Dirhams).
Vous pouvez utiliser des fonctions telles que array_filter, array_map, array_reduce,
array_multisort, usort, array_sum, array_column, …