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.



solution :

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

Leave a Reply