PHP 5 Cours et exercices 2e Edition
É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));
14
print_r($tab);
?>
La fonction print_r() affiche la structure du tableau :É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.
<?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 :Utilisez une boucle foreach pour lire les tableaux des exercices 1 et 2. Lecture du tableau de l’exercice 1 :
<?php
$tab=array("Dupont"=>array("Paul","Paris",27),"Schmoll"=>array("Kir
k","Berlin",35),"Smith"=>array("Stan","Londres",45));
foreach($tab as $cle=>$valeur)
{
echo "Elément $cle :
";
foreach($valeur as $ind=>$val)
{
echo "elément $ind :", $val, "
";
}
}
?>
Le résultat obtenu est le suivant :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 :45Lecture 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 "Element $cle :
";
foreach($valeur as $cle2=>$val)
{
echo " $cle2 :", $val, "
";
}
}
?>
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
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().
<?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 45Lecture 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
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.
<?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éCréez un tableau d’entiers variant de 1 à 63, puis à partir de celui ci 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.
<?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 X sin( X ) 0 0 0.1 0.0998334166468 0.2 0.198669330795 0.3 0.295520206661 0.4 0.389418342309 0.5 0.479425538604 0.6 0.564642473395 0.7 0.644217687238 0.8 0.7173560909 0.9 0.783326909627 1 0.841470984808 1.1 0.891207360061 1.2 0.932039085967 1.3 0.963558185417 1.4 0.985449729988 1.5 0.997494986604 1.6 0.999573603042 1.7 0.991664810452 1.8 0.973847630878 1.9 0.946300087687 2 0.909297426826 2.1 0.863209366649 2.2 0.80849640382 2.3 0.745705212177 2.4 0.675463180551 2.5 0.598472144104 2.6 0.515501371821 2.7 0.427379880234 2.8 0.334988150156 2.9 0.239249329214 3 0.14112000806 3.1 0.0415806624333 3.2 -0.0583741434276 3.3 -0.157745694143 3.4 -0.255541102027 3.5 -0.35078322769 3.6 -0.442520443295 3.7 -0.529836140908 3.8 -0.611857890943 3.9 -0.687766159184 4 -0.756802495308 4.1 -0.818277111064 4.2 -0.871575772414 4.3 -0.916165936749 4.4 -0.95160207389 4.5 -0.977530117665 4.6 -0.993691003633 4.7 -0.999923257564 4.8 -0.996164608836 4.9 -0.982452612624 5 -0.958924274663 5.1 -0.925814682328 5.2 -0.88345465572 5.3 -0.832267442224 5.4 -0.772764487556 5.5 -0.70554032557 5.6 -0.631266637872 5.7 -0.550685542598 5.8 -0.464602179414 5.9 -0.37387666483 6 -0.279415498199 6.1 -0.182162504272 6.2 -0.0830894028175 6.3 0.0168139004843
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.
<?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 %