Vous êtes sur la page 1sur 2

L2 Info

Développement Web
TD 5 - PHP

1 Manipulation de tableaux
On considère qu’on dispose d’une variable $chaine (qui est une chaı̂ne de caractères) avec un
contenu du type "Guillaume 32 Sébastien 37 Vincent 15 Agathe 21" représentant le prénom et
l’âge de personnes. Le but de l’exercice sera de traiter cette chaı̂ne puis de l’afficher sous une forme par-
ticulière dans une page PHP. On dispose pour cela de la fonction explode("separateur",$chaine)
qui découpe une chaı̂ne selon un séparateur et renvoie le résultat sous forme d’un tableau (avec dans
chaque case du tableau un élément de la chaı̂ne).

1.1 Version 1
1. Écrire une fonction decoupeEn2Tableaux($chaine) qui, étant donnée une chaı̂ne de caractères
de la forme indiquée précédemment, retourne 2 tableaux. Le premier contient uniquement les
prénoms, et le second uniquement les âges. Bien sûr l’ordre des prénoms et âges doit être respecté,
pour ne pas perdre les correspondances prénom/âge.
2. Écrire une fonction afficheListeOrdonnee($tab1, $tab2) qui, étant donnés 2 tableaux (le
premier contenant les prénoms et le second les âges), affiche l’ensemble sous forme de liste
ordonnée. Sur l’exemple, on doit obtenir :
1. Guillaume a 32 ans
2. Sébastien a 37 ans
3. Vincent a 15 ans
4. Agathe a 21 ans

1.2 Version 2
1. Écrire une fonction decoupeEnTableauAssociatif($chaine) qui, étant donnée une chaı̂ne de
caractères de la forme indiquée précédemment, retourne 1 tableau associatif. Les clés seront les
prénoms, et les valeurs les âges (ceci signifie qu’on considère qu’il n’y aura pas 2 fois le même
prénom).
2. Écrire une fonction afficheListeNonOrdonnee($tab) qui, étant donné 1 tableau associatif
(la clé contenant les prénoms et la valeur les âges), affiche l’ensemble sous forme de liste non
ordonnée. Sur l’exemple, on doit obtenir :
• Guillaume a 32 ans
• Sébastien a 37 ans
• Vincent a 15 ans
• Agathe a 21 ans

1.3 Affichage
Écrire le code PHP de la partie <body> de la page. Il consiste à initialiser la chaı̂ne et appeler
correctement les fonctions.

1
2 Tri de tableaux
En PHP, il existe des ordres de tri déjà codés, mais on peut aussi créer ses propres fonctions
de tri. Une fonction de tri prend 2 paramètres, qui sont les 2 éléments à comparer (des entiers, des
caractères. . .). Elle retourne 0 si les éléments sont égaux, -1 si le premier élément est plus petit (selon
l’ordre choisi) que le second et 1 sinon. Par exemple, une fonction qui trierait des entiers par ordre
décroissant serait :

function compDecroissant($a,$b){
if($a==$b){
return 0;
}
else{
if($a>$b){
return -1;
}
else{
return 1;
}
}
}

Ensuite, si l’on veut trier un tableau sur ses valeurs selon l’ordre que l’on vient de définir, il suffit
de faire usort($tab,"compDecroissant");.
Si le tri doit être fait sur les clés, alors on appelle uksort($tab,"compDecroissant");

2.1 Tri selon les valeurs


On considère qu’on dispose d’une variable $tab représentant un tableau, avec dans chaque case
une chaı̂ne de caractères de forme "Nom Sexe Age Ville" (par ex. "Durand Masculin 35 Paris").
1. Écrire une fonction compChamp($a,$b,$c) (fonction intermédiaire qui sera utilisée par nos fonc-
tions de tri) qui prend en paramètre 2 chaı̂nes de caractères du tableau ($a et $b) et un indice
correspondant au champ permettant de comparer ces chaı̂nes ($c). Par exemple, si $c=0, alors
on veut comparer les noms, et si $c=2 alors on veut comparer les âges. Cette fonction trie par
ordre croissant selon $c et renvoie 0, 1 ou -1. En PHP, on compare des chaı̂nes de caractères
avec la fonction strcmp($c1,$c2) qui renvoie 0 si les deux chaı̂nes sont égales, -1 si la première
est avant la seconde, et 1 sinon.
2. Écrire la fonction compSexeAge($a,$b) qui trie par sexe, puis par âge décroissant si plusieurs
personnes sont de même sexe.
3. Écrire la fonction compVilleSexeAge($a,$b) qui trie par ville, puis par sexe s’il y a plusieurs
personnes de la même ville, puis par âge décroissant s’il y a plusieurs personnes de la même ville
et de même sexe.

2.2 Tri selon les clés


On considère qu’on dispose d’une variable $tab représentant un tableau associatif, contenant la
liste des départements français, avec pour clé le numéro et pour valeur le nom. Par exemple : $tab =
array(3 => "Allier", 30 => "Gard", 7 => "Ardèche", 40 => "Landes", 73 => "Savoie");.
Écrire une fonction compDepartement($a,$b) qui prend en paramètre 2 entiers représentant des
numéros de départements, et implante le tri suivant : > sur les nombres impairs, < sur les nombres
pairs et tel que tout nombre impair soit plus petit qu’un nombre pair. Sur l’exemple, on doit obtenir :
73 Savoie, 7 Ardèche, 3 Allier, 30 Gard, 40 Landes.

Vous aimerez peut-être aussi