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