30
Ecole ESIAM Ecole ESIAM 1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Embed Size (px)

Citation preview

Page 1: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 11

Chapitre 2 :Tableaux

Pr. Aissam MESRAR

Page 2: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 22

TableauxTableaux

Page 3: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 33

TableauxTableaux Un tableau est une structure qui peut contenir Un tableau est une structure qui peut contenir

plusieurs valeursplusieurs valeurs

Les données d’un tableau ne sont pas forcément Les données d’un tableau ne sont pas forcément

de même typede même type

La taille d’un tableau est dynamiqueLa taille d’un tableau est dynamique

1010 bonbon 12.312.3 mm

Page 4: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 44

TableauxTableaux

Deux types de tableaux : Deux types de tableaux :

Tableaux scalaires : tableaux Tableaux scalaires : tableaux

conventionnelsconventionnels

Tableaux associatifsTableaux associatifs

Page 5: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 55

Tableaux scalairesTableaux scalaires

Les éléments d’un tableau sont Les éléments d’un tableau sont

référencés par des indices entiersréférencés par des indices entiers

Les indices sont par défaut successifs Les indices sont par défaut successifs Le premier indice est 0Le premier indice est 0

Le dernier est : nombre d’éléments – 1Le dernier est : nombre d’éléments – 1

00 11 22 33

ElemElem11

ElemElem22

ElemElem33

ElemElem44

Page 6: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 66

Tableaux scalairesTableaux scalaires

InitialisationInitialisation Un tableau est initialisé par la fonction Un tableau est initialisé par la fonction array()array()

$nom_tab = array(val1,val2,val3,…);$nom_tab = array(val1,val2,val3,…);

Exemple :Exemple :

$couleurs=array("rouge","vert","bleu");$couleurs=array("rouge","vert","bleu");

Affichage d’un tableauAffichage d’un tableau Le tableau peut être affiché en entier par la fonction print_r Le tableau peut être affiché en entier par la fonction print_r

() () print_r($nom_tab);print_r($nom_tab);

Page 7: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 77

Tableaux scalairesTableaux scalaires

Accès aux éléments du tableauAccès aux éléments du tableau Un élément du tableau est accédé via son Un élément du tableau est accédé via son

indiceindice

$nom_tab[indice]$nom_tab[indice]

Exemple:Exemple:

$couleurs[2]= "gris";$couleurs[2]= "gris";

print($couleurs[0]);print($couleurs[0]);

$ma_couleur = $couleurs[1];$ma_couleur = $couleurs[1];

Page 8: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 88

Tableaux scalairesTableaux scalaires

Affectation des tableauxAffectation des tableaux

A la différence des langages classiques, on A la différence des langages classiques, on

peut affecter un tableau à un autre. peut affecter un tableau à un autre.

$tab1 = $tab2;$tab1 = $tab2;

Permet de copier tous les éléments de $tab2 dans Permet de copier tous les éléments de $tab2 dans

$tab1$tab1

Page 9: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 99

Tableaux scalairesTableaux scalaires Exemple récapitulatifrécapitulatif

<?php<?php$couleurs=array("rouge","vert","bleu");$couleurs=array("rouge","vert","bleu");print_r($couleurs);print_r($couleurs);print("<br>");print("<br>");

print("première couleur :$couleurs[0] <br>");print("première couleur :$couleurs[0] <br>");$ma_couleur = $couleurs[1];$ma_couleur = $couleurs[1];

print("<br> modification de la troisième couleur<br>");print("<br> modification de la troisième couleur<br>");$couleurs[2]="gris";$couleurs[2]="gris";print_r($couleurs);print_r($couleurs);print("<br><br> couleur préférée : $ma_couleur<BR>");print("<br><br> couleur préférée : $ma_couleur<BR>");

$copie_tab = $couleurs;$copie_tab = $couleurs;print("<BR> affichage de la copie du tableau: >BR>");print("<BR> affichage de la copie du tableau: >BR>");print_r($copie_tab);print_r($copie_tab);?>?>

Page 10: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1010

Tableaux scalairesTableaux scalaires

Ajout d’un élément à la fin du tableau Ajout d’un élément à la fin du tableau Trois manières :Trois manières :

Directement avec son indiceDirectement avec son indice$couleurs[3]="orange";$couleurs[3]="orange";

Sans indiceSans indice$couleurs[]="orange";$couleurs[]="orange";

Avec la fonction array_push()Avec la fonction array_push()array_push($couleurs,"blanc");array_push($couleurs,"blanc");

Page 11: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1111

Tableaux scalairesTableaux scalaires

Ajout d’un élément au début du tableau Ajout d’un élément au début du tableau

Avec la fonction array_unshift()Avec la fonction array_unshift() Exemple :Exemple :

array_unshift($couleurs,"noir");array_unshift($couleurs,"noir");

Page 12: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1212

Tableaux scalairesTableaux scalaires

Exemple récapitulatifrécapitulatif

<?php<?php$couleurs=array("rouge","vert","bleu");$couleurs=array("rouge","vert","bleu");print_r($couleurs);print_r($couleurs);print("<br> ajout à la fin du tableau<br>");print("<br> ajout à la fin du tableau<br>");

$couleurs[3]="orange";$couleurs[3]="orange";$couleurs[]="jaune";$couleurs[]="jaune";array_push($couleurs,"blanc");array_push($couleurs,"blanc");

print_r($couleurs);print_r($couleurs);

print("<br> ajout au début du tableau <br>");print("<br> ajout au début du tableau <br>");array_unshift($couleurs,"noir");array_unshift($couleurs,"noir");print_r($couleurs);print_r($couleurs);?>?>

Page 13: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1313

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

sizeof($tab) et count($tab)sizeof($tab) et count($tab) Retournent le nombre d’éléments du tableauRetournent le nombre d’éléments du tableau

$taille=count($tab);$taille=count($tab);

array_pop($tab)array_pop($tab) Retourne et supprime le dernier élément du Retourne et supprime le dernier élément du

tableautableau

Dépile le tableauDépile le tableau

$dernier = array_pop($tab);$dernier = array_pop($tab);

Page 14: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1414

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

array_shift($tab)array_shift($tab) Retourne et supprime le premier élément du Retourne et supprime le premier élément du

tableautableau

Défile le tableauDéfile le tableau

$premier = array_shift($tab);$premier = array_shift($tab);

sort($tab)sort($tab) Trie le tableauTrie le tableau

Voir aussi : asort(), rsort(), arsort(), ksort()Voir aussi : asort(), rsort(), arsort(), ksort()

Page 15: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1515

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

Exemple récapitulatifrécapitulatif<?php<?php$couleurs=array("noir","rouge","vert","bleu","orange","jaune");$couleurs=array("noir","rouge","vert","bleu","orange","jaune");print_r($couleurs);print_r($couleurs);

$dcouleur=array_pop($couleurs);$dcouleur=array_pop($couleurs);$pcouleur=array_shift($couleurs);$pcouleur=array_shift($couleurs);print("dernière couleur :$dcouleur <BR>");print("dernière couleur :$dcouleur <BR>");print("première couleur :$pcouleur <BR>");print("première couleur :$pcouleur <BR>");print("Tableau après suppression du premier et dernier éléments : <BR>");print("Tableau après suppression du premier et dernier éléments : <BR>");print_r($couleurs);print_r($couleurs);

print("<br> tableau trié <br>");print("<br> tableau trié <br>");sort($couleurs);sort($couleurs);print_r($couleurs);print_r($couleurs);

?>?>

Page 16: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1616

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

list($var1,$var2,…) = $tab;list($var1,$var2,…) = $tab; Range les valeurs des premiers éléments du Range les valeurs des premiers éléments du

tableau dans les variables passées en tableau dans les variables passées en

paramètres à la fonction listparamètres à la fonction list

Le nombre de variables doit être inférieur à la Le nombre de variables doit être inférieur à la

taille du tableautaille du tableau

Possibilité de sauter certains élémentsPossibilité de sauter certains éléments list(,$var2) = $tab;list(,$var2) = $tab;

Extrait le deuxième élément du tableauExtrait le deuxième élément du tableau

Page 17: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1717

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

Exemple<?php<?php

$couleurs=array("noir","rouge","vert","bleu","orange","jaune");$couleurs=array("noir","rouge","vert","bleu","orange","jaune");

print_r($couleurs);print_r($couleurs);

print("<br> utilisation de list <br>");print("<br> utilisation de list <br>");

print("Extraire la première et deuxième valeurs : <BR>");print("Extraire la première et deuxième valeurs : <BR>");

list($v1,$v2) = $couleurs;list($v1,$v2) = $couleurs;

print("$v1:$v2");print("$v1:$v2");

print("<BR><BR>Extraire la troisème et quatrième valeurs :<BR>");print("<BR><BR>Extraire la troisème et quatrième valeurs :<BR>");

list(,,$v3,$v4) = $couleurs;list(,,$v3,$v4) = $couleurs;

print("$v3:$v4<BR>");print("$v3:$v4<BR>");

?>?>

Page 18: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1818

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

explode("sep",$chaine);explode("sep",$chaine); Convertit une chaîne de caractère en un tableau,Convertit une chaîne de caractère en un tableau,

Le séparateur des éléments dans la chîane est : Le séparateur des éléments dans la chîane est : "sep""sep"

$chaine_vers_tab = explode(":","rouge:vert:bleu");$chaine_vers_tab = explode(":","rouge:vert:bleu");

RougeRouge VertVert bleubleu$chaine_vers_tab

Page 19: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 1919

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

implode("sep",$tab);implode("sep",$tab);

Convertit un tableau en une chaîne de Convertit un tableau en une chaîne de

caractère en insérant le séparateur caractère en insérant le séparateur

"sep" "sep" entre deux éléments consécutifs entre deux éléments consécutifs $tab_vers_chaine = implode(":",$chaine_vers_tab);$tab_vers_chaine = implode(":",$chaine_vers_tab);

Equivalent à Equivalent à $tab_vers_chaine $tab_vers_chaine

="rouge:vert:bleu"="rouge:vert:bleu"

Page 20: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2020

Fonctions de manipulation des Fonctions de manipulation des tableauxtableaux

Exemple<?php<?php

$dateslash="12/03/2006";$dateslash="12/03/2006";

print("<br> conversion de chaine en tableau <br>");print("<br> conversion de chaine en tableau <br>");$tabdate = explode("/",$dateslash);$tabdate = explode("/",$dateslash);

print_r($tabdate);print_r($tabdate);

print("<br> conversion de tableau en chaine <br>");print("<br> conversion de tableau en chaine <br>");$datetiret = implode("-",$tabdate);$datetiret = implode("-",$tabdate);

print($datetiret);print($datetiret);?>?>

Page 21: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2121

Tableaux associatifsTableaux associatifs

Dans un tableau scalaire, chaque élément est Dans un tableau scalaire, chaque élément est

référencé implicitement par un indice de type entierréférencé implicitement par un indice de type entier

Dans un tableau associatif, chaque élément est Dans un tableau associatif, chaque élément est

référencé explicitement par un indice appelé clé de référencé explicitement par un indice appelé clé de

type arbitrairetype arbitraire

clecle11

valval11

clecle22

valval22

clecle33

valval33

Page 22: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2222

Tableaux associatifsTableaux associatifs La clé et la valeur correspondante sont séparées par "=>" La clé et la valeur correspondante sont séparées par "=>"

$tab_ass = $tab_ass =

array("nom"=>"Dupont","prenom"=>"Michel","section"=>"MSTI");array("nom"=>"Dupont","prenom"=>"Michel","section"=>"MSTI");

La clé peut être de type chaîne de caractèreLa clé peut être de type chaîne de caractère

nomnom DupontDupont prenomprenom MichelMichel sectionsection MSTIMSTI

clé

valeur

Page 23: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2323

Tableaux associatifsTableaux associatifs

Dans le même tableau deux clés peuvent être de types Dans le même tableau deux clés peuvent être de types

différentsdifférents

$tab_ass = array(1=>1278, "nom"=>"Dupont","prenom"=>"Michel")$tab_ass = array(1=>1278, "nom"=>"Dupont","prenom"=>"Michel")

11 12781278 nomnom DupontDupont prenomprenom MichelMichel

clé

valeur

Page 24: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2424

Tableaux associatifsTableaux associatifs

Un tableau scalaire est un cas particulier Un tableau scalaire est un cas particulier

des tableaux associatifs où toutes les des tableaux associatifs où toutes les

clés sont des entiersclés sont des entiers Les deux instructions sont équivalentes :Les deux instructions sont équivalentes :

$tab_ass_scal = array(0 $tab_ass_scal = array(0

=>"Dupont",1=>"Michel",2=>"MSTI");=>"Dupont",1=>"Michel",2=>"MSTI");

$tab_scal = array("Dupont","Michel","MSTI");$tab_scal = array("Dupont","Michel","MSTI");

Vérifier avec la fonction print_r()Vérifier avec la fonction print_r()

Page 25: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2525

Tableaux associatifsTableaux associatifs

Accès aux éléments d’un tableau associatifAccès aux éléments d’un tableau associatif

via la clévia la clé

$tab[cle_element]$tab[cle_element]

Exemple Exemple

$nom_eleve= $eleve["nom"];$nom_eleve= $eleve["nom"];

$eleve["section"] = "MSTIEEA";$eleve["section"] = "MSTIEEA";

print($eleve["prenom"]);print($eleve["prenom"]);

Page 26: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2626

Tableaux associatifsTableaux associatifs

Insertion à la fin du tableauInsertion à la fin du tableau

Directement avec la cléDirectement avec la clé

$tab[nouvelle_cle] = nouvelle_valeur;$tab[nouvelle_cle] = nouvelle_valeur;

Page 27: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2727

Tableaux associatifsTableaux associatifs

Fonctions de gestion interneFonctions de gestion interne

Le dernier élément manipulé est toujours Le dernier élément manipulé est toujours

mémorisé (via un pointeur)mémorisé (via un pointeur)

current($tab)current($tab)

Retourne la valeur du dernier élément manipuléRetourne la valeur du dernier élément manipulé

key($tab)key($tab)

Retourne la clé du dernier élément manipuléRetourne la clé du dernier élément manipulé

Page 28: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2828

Tableaux associatifsTableaux associatifs Fonctions de gestion interneFonctions de gestion interne

reset($tab)reset($tab) Positionne le pointeur du tableau sur le premier élément Positionne le pointeur du tableau sur le premier élément

et renvoie sa valeuret renvoie sa valeur

end($tab)end($tab) Positionne le pointeur du tableau sur le dernier élément Positionne le pointeur du tableau sur le dernier élément

et renvoie sa valeuret renvoie sa valeur next($tab)next($tab)

avance le pointeur du tableau de 1 et renvoie la valeur avance le pointeur du tableau de 1 et renvoie la valeur de l’élément suivantde l’élément suivant

prev($tab)prev($tab) recule le pointeur du tableau de 1 et renvoie la valeur de recule le pointeur du tableau de 1 et renvoie la valeur de

l’élément précédentl’élément précédent

Page 29: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 2929

Tableaux associatifsTableaux associatifs

Fonctions de gestion interne Fonctions de gestion interne each($tab)each($tab)

Retourne l’élément courant et avance le Retourne l’élément courant et avance le

pointeur du tableau de 1pointeur du tableau de 1

L’élément renvoyé est un tableau de 4 élémentsL’élément renvoyé est un tableau de 4 éléments

Clés : 1, value, 0, keyClés : 1, value, 0, key

Valeurs associées : Valeurs associées :

0,key : valeur de la clé0,key : valeur de la clé

1,value : valeur de l’élément1,value : valeur de l’élément

Page 30: Ecole ESIAM1 Chapitre 2 :Tableaux Pr. Aissam MESRAR

Ecole ESIAMEcole ESIAM 3030

Tableaux multidimensionnelsTableaux multidimensionnels

Un élément de ce tableau peut être également un Un élément de ce tableau peut être également un

tableautableau

ExempleExemple$menu = $menu =

array("entree"=>array("nicoice","mexicaine","variee"),array("entree"=>array("nicoice","mexicaine","variee"),

"plat"=>array("poisson","tagine","brochettes"),"plat"=>array("poisson","tagine","brochettes"),

"dessert"=>array("banane","pomme","orange"));"dessert"=>array("banane","pomme","orange"));

print_r($menu);print_r($menu);