Vous êtes sur la page 1sur 30

---------------

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/>";
}
?>

• Lecture des éléments d’un tableau : Avec une boucle while


<?php
$i=0;
while ($tab[$i]){
if ($tab[$i][0] =="a" ) echo $tab[$i], "<br /> "; }
?>
PHP: Tableaux
• Lecture des éléments d’un tableau : Avec une boucle foreach
<?php
$jour = array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam");
$i = 0;
foreach($jour as $JJ) {
echo "La cellule numéro ". $i . " : " . $JJ . "<br>";
$i++; }
?>
PHP: Tableaux
• Lecture des éléments d’un tableau associatif :
$tableau = array(clé1 => val1, clé2 => val2, ..., cléN => valN);
foreach($tableau as $clé => $valeur) {
echo "Valeur ($clé): $valeur";
}
PHP: Tableaux
• Lecture des éléments d’un tableau associatif :
$tableau = array(clé1 => val1, clé2 => val2, ..., cléN => valN);
foreach($tableau as $clé => $valeur) {
echo "Valeur ($clé): $valeur";
}

<?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);

applique une fonction à un ou plusieurs tableaux.


PHP: Fonctions des Tableaux
• $tableau = array_merge($var_1, $var_2, ..., $var_N);
enchaîne des tableaux entrés en argument afin d'en retourner
un unique.
• $tableau = array_merge_recursive($var1,$var2,...,$varN);
enchaîne des tableaux en conservant l'ordre des éléments dans
le tableau résultant. Dans le cas de clés communes, les valeurs
sont placées dans un tableau.
PHP: Fonctions des Tableaux
• true | false = array_multisort($var, critère1, critère2 , ...,
$var_N, critère1, critère2);
trie 1/plusieurs tableaux ( ordre = SORT_ASC /
SORT_DESC), avec une comparaison alphabétique,
numérique ou de chaîne de caractères (SORT_REGULAR,
SORT_NUMERIC ou SORT_STRING).
<?php
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);
var_dump($ar1);
var_dump($ar2);
?>
PHP: Fonctions des Tableaux
• true | false = array_multisort($var, critère1, critère2 , ...,
$var_N, critère1, critère2);
trie 1/plusieurs tableaux ( ordre = SORT_ASC /
SORT_DESC), avec une comparaison alphabétique,
numérique ou de chaîne de caractères (SORT_REGULAR,
SORT_NUMERIC ou SORT_STRING).
<?php
$ar = array( array("10", 11, 100, 100, "a"),
array(1, 2, "2", 3, 1) );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>
PHP: Fonctions des Tableaux
• $tableau = array_pad($variable, taille, valeur);
Complète un tableau avec une valeur jusqu'à la longueur
spécifiée.

<?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).

• Créez un tableau associatif contenant au moins 5 employés avec leurs informations.


• Trouvez l'employé ayant le salaire le plus élevé.
• Calculez la moyenne des salaires de tous les employés.
• Triez le tableau en fonction des salaires, du plus bas au plus élevé.
• Ajoutez un nouveau champ "prime" à chaque employé. La prime est égale à 10% de
leur salaire.
• Trouvez l'employé ayant la plus grande prime.
• Calculez la somme totale des salaires et des primes de tous les employés.
• Affichez la liste des employés triée par ordre alphabétique du nom.
• Affichez la liste des employés triée par ordre alphabétique inverse du nom.

Vous pouvez utiliser des fonctions telles que array_filter, array_map, array_reduce,
array_multisort, usort, array_sum, array_column, …

Vous aimerez peut-être aussi