Exercices corrigés sur les tableaux associatif en php TP e TD avec correction php5
Les Tableaux en PHP
Exercice 1
Écrivez un tableau multidimensionnel associatif dont les clés sont des noms de personne et les valeurs des tableaux indicés contenant le prénom, la ville de résidence et l’age de la personne.
<?php
$tab=array("Dupont"=>array("Paul","Paris",27),"Schmoll"=>array("Kir
k","Berlin",35),"Smith"=>array("Stan","Londres",45));
print_r($tab);
?>
La fonction print_r() affiche la structure du tableau :
Array ( [Dupont] => Array ( [0] => Paul [1] => Paris [2] => 27 ) [Schmoll] => Array ( [0] => Kirk [1] => Berlin [2] => 35 ) [Smith] => Array ( [0] => Stan [1] => Londres [2] => 45 ) )
Exercice 2
Écrivez un tableau multidimensionnel associatif dont les clés sont des noms de personne et les valeurs des tableaux associatifs dont les clés sont le prénom, la ville de résidence et l’age de la personne avec une série de valeurs associées.
solution :
<?php
$tab=array("Dupont"=>array("prenom"=>"Paul","ville"=>"Paris","age"=>27),
"Schmoll"=>array("prenom"=>"Kirk","ville"=>"Berlin","age"=>35),
"Smith"=>array("prenom"=>"Stan","ville"=>"Londres","age"=>45));
print_r($tab);
?>
La fonction print_r() affiche la structure du tableau :
Array ( [Dupont] => Array ( [prenom] => Paul [ville] => Paris [age]=> 27 ) [Schmoll] => Array ( [prenom] => Kirk [ville] => Berlin [age] => 35 ) [Smith] => Array ( [prenom] => Stan [ville] =>Londres [age] => 45 ) )
Exercice 3
Utilisez une boucle foreach pour lire les tableaux des exercices 1 et 2.
Lecture du tableau de l’exercice 1 :
solution :
<?php
$tab=array("Dupont"=>array("Paul","Paris",27),"Schmoll"=>array("Kirk","Berlin",35),"Smith"=>array("Stan","Londres",45));
foreach($tab as $cle=>$valeur)
{
echo "<b>Elément $cle :</b><br />";
foreach($valeur as $ind=>$val)
{
echo "elément $ind :", $val, "<br />";
}
}
?>
Le résultat obtenu est le suivant :
Elément Dupont :
elément 0 :Paul
elément 1 :Paris
elément 2 :27
Elément Schmoll :
elément 0 :Kirk
elément 1 :Berlin
elément 2 :35
Elément Smith :
elément 0 :Stan
elément 1 :Londres
elément 2 :45
Lecture du tableau de l’exercice 2 :
<?php
$tab=array("Dupont"=>array("prenom"=>"Paul","ville"=>"Paris","age"=>27),
"Schmoll"=>array("prenom"=>"Kirk","ville"=>"Berlin","age"=>35),
"Smith"=>array("prenom"=>"Stan","ville"=>"Londres","age"=>45));
foreach($tab as $cle=>$valeur)
{
echo "<b>Element $cle :</b><br />";
foreach($valeur as $cle2=>$val)
{
echo " $cle2 :", $val, "<br />";
}
}
?>
Le résultat obtenu est le suivant :
Element Dupont :
prenom :Paul
ville :Paris
age :27
Element Schmoll :
prenom :Kirk
ville :Berlin
age :35
Element Smith :
prenom :Stan
ville :Londres
age :45
Exercice 4
Utilisez une boucle while pour lire les tableaux des exercices 1 et 2.
Lecture du tableau de l’exercice 1 : nous utilisons une boucle while et la fonction each().
solution :
<?php
$tab=array("Dupont"=>array("Paul","Paris",27),"Schmoll"=>array("Kir
k","Berlin",35),"Smith"=>array("Stan","Londres",45));
while($element=each($tab))
{
echo "Personne: {$element['key']} <br />";
while($coord=each($element[1]))
{
echo "clé {$coord[0]} valeur {$coord[1]} <br />";
}
echo"<hr />";
}
?>
Le résultat obtenu est le suivant :
Personne: Dupont
clé 0 valeur Paul
clé 1 valeur Paris
clé 2 valeur 27
Personne: Schmoll
clé 0 valeur Kirk
clé 1 valeur Berlin
clé 2 valeur 35
Personne: Smith
clé 0 valeur Stan
clé 1 valeur Londres
clé 2 valeur 45
Lecture du tableau de l’exercice 2 : nous utilisons une boucle while et la fonction each().
<?php
$tab=array("Dupont"=>array("prenom"=>"Paul","ville"=>"Paris","age"=>27),
"Schmoll"=>array("prenom"=>"Kirk","ville"=>"Berlin","age"=>35),
"Smith"=>array("prenom"=>"Stan","ville"=>"Londres","age"=>45));
while($element=each($tab))
{
echo "Personne: {$element['key']} <br />";
while($coord=each($element[1]))
{
echo "{$coord[0]}:{$coord[1]} <br />";
}
echo"<hr />";
}
?>
Le résultat obtenu est le suivant :
Personne: Dupont
prenom:Paul
ville:Paris
age:27
Personne: Schmoll
prenom:Kirk
ville:Berlin
age:35
Personne: Smith
prenom:Stan
ville:Londres
age:45
Exercice 5
Créez un tableau contenant une liste d’adresses de sites recommandés, puis créez un lien aléatoire vers le premier site de la liste après avoir trié le tableau en ordre aléatoire.
La fonction shuffle() mélange effectivement les éléments d’un tableau mais ne conserve pas les clés, elle n’est donc pas adaptée pour récupérer la clé et la valeur du tableau $tab. Nous utilisons
la fonction array_rand() qui retourne la clé de l’élément pris au hasard. Cette clé permet de lire le nom du site et son adresse URL.
solution :
<?php
$tab=array("PHP"=>"http://www.php.net","MySQL"=>"http://www.mysql.o
rg","SQLite"=>"http://www.sqlite.org");
$site=array_rand($tab);
echo "Site recommandé : <a href=\"$tab[$site]\" > ",$site,"</a>";
?>
Exemple de résultat affiché
Site recommandé : MySQL
Exercice 6
Créez un tableau d’entiers variant de 1 à 63, puis à partir de celuici un autre tableau de nombres variant de 0 à 6.3. Créez ensuite un tableau associatif dont les clés X varient de 0 à 6.3 et dont les valeurs sont sin(X). Affichez le tableau de valeurs dans un tableau HTML.
solution :
<?php
//Tableau ayant pour valeurs les entiers de 0 à 63
$tab=range(0,63);
//Tableau ayant pour valeurs les décimaux de 0 à 6.3
foreach($tab as $ind=>$val)
{
$tab[$ind]=$tab[$ind]/10;
}
//Tableau dont les clés sont X et les valeurs sin(X)
foreach($tab as $ind=>$val)
{
$val= (string) $val;
$tabsin[$val]= sin($val);
}
//Création du tableau HTML
echo "<table border=\"1\" width=\"50%\" >";
echo "<caption><b>Tableau de valeurs de la fonction
sinus</b></caption>";
echo "<tr> <th> X </th> <th> sin( X )</th> </tr>";
foreach($tabsin as $cle=>$val)
{
echo "<tr><td>$cle</td> <td>$val</td></tr>";
}
echo "</table>";
echo "<hr />";
?>
Le résultat affiché est le tableau HTML suivant :
Tableau de valeurs de la fonction sinus
Exercice 7
Créez un tableau contenant une liste d’adresses e-mail. Extrayez le nom de serveur de ces données, puis réalisez des statistiques sur les occurrences de chaque fournisseur d’accès.
solution :
<?php
//Tableau des adresses mail
$tab=array("php5@free.com","jean556@fiscali.fr","machine@waladoo.fr
","webmestre@waladoo.fr","pauldeux@fiscali.fr","macafi@fiscali.fr")
;
//Récupération des noms de domaine
foreach($tab as $ind=>$val)
{
$dom=explode("@",$val);
$domaine[]=$dom[1];
}
//Compte du nombre d'occurences de chaque domaine
$stat=array_count_values ($domaine);
//Nombre total d'adresses
$total=count($tab);
//Ou encore
//$total=array_sum($stat);
//Calcul des pourcentages
foreach($stat as $fourn=>$nb)
{
$pourcent[$fourn]=$nb/$total*100;
echo "Fournisseur d'accès : $fourn =
",round($pourcent[$fourn],2)," % <br />";
}
?>
Le résultat obtenu ici est le suivant :
Fournisseur d'accès : free.com = 16.67 %
Fournisseur d'accès : fiscali.fr = 50 %
Fournisseur d'accès : waladoo.fr = 33.33 %
Article plus récent Article plus ancien