Tableaux indexés numériquement
Ces tableaux utilisent des identifiants numérique dont la numérotation commence à 0.
Ainsi suivant l’exemple ci-dessous ( exemple 6.1 )
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%5B%5D%20%3D%20%22Copieur%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Jet%20d’encre%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Laser%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Photo%22%3B%0A%0A%20%20print_r(%24papier)%3B%0A%3F%3E » message= »exemple 6.1″ highlight= » » provider= »manual »/]
Nous avons à l’écran :
[pastacode lang= »php » manual= »Array%20(%20%5B0%5D%20%3D%3E%20Copieur%20%5B1%5D%20%3D%3E%20Jet%20d’encre%20%5B2%5D%20%3D%3E%20Laser%20%5B3%5D%20%3D%3E%20Photo%20) » message= » » highlight= » » provider= »manual »/]
On peut si on le souhaite utiliser des identifiants précis comme dans cet exemple.
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%5B2%5D%20%3D%20%22Copieur%22%3B%0A%20%20%24papier%5B4%5D%20%3D%20%22Jet%20d’encre%22%3B%0A%20%20%24papier%5B6%5D%20%3D%20%22Laser%22%3B%0A%20%20%24papier%5B9%5D%20%3D%20%22Photo%22%3B%0A%0A%20%20print_r(%24papier)%3B%0A%3F%3E » message= »exemple 6.2″ highlight= » » provider= »manual »/]
Nous avons à l’écran :
[pastacode lang= »php » manual= »Array%20(%20%5B2%5D%20%3D%3E%20Copieur%20%5B4%5D%20%3D%3E%20Jet%20d’encre%20%5B6%5D%20%3D%3E%20Laser%20%5B9%5D%20%3D%3E%20Photo%20) » message= » » highlight= » » provider= »manual »/]
la fonction print_r() que l’on utilise ici est pratique mais ne s’utilise pas en production car l’affichage n’est pas irisable vraiment tel quel et peu modulable. print_r() sert surtout lors du développement pour connaitre rapidement le contenu d’un tableau.
En production on devra parcourir le tableau et décider de la mise en forme comme on le souhaite.
Pour parcourir un tableau on utilise foreach…as
Voyons comment on procède :
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%20%3D%20array(%22Copieur%22%2C%20%22Jetencre%22%2C%20%22Laser%22%2C%20%22Photo%22)%3B%0A%20%20%24j%20%3D%200%3B%0A%0A%20%20print_r%20(%24papier)%3B%0A%20%20%0A%20%20foreach(%24papier%20as%20%24item)%0A%20%20%7B%0A%20%20%20%20echo%20%22%24j%3A%20%24item%3Cbr%3E%22%3B%0A%20%20%20%20%2B%2B%24j%3B%0A%20%20%7D%0A%3F%3E » message= »exemple 6.3″ highlight= » » provider= »manual »/]
Nous avons à l’écran :
[pastacode lang= »markup » manual= »Array%20(%20%5B0%5D%20%3D%3E%20Copieur%20%5B1%5D%20%3D%3E%20Jetencre%20%5B2%5D%20%3D%3E%20Laser%20%5B3%5D%20%3D%3E%20Photo%20)%200%3A%20Copieur%0A1%3A%20Jetencre%0A2%3A%20Laser%0A3%3A%20Photo » message= » » highlight= » » provider= »manual »/]
Explications: foreach est comme une boucle for mais adapté au tableaux.
Donc ici à chaque passage la variable $item reçoit l’élément suivant. On n’a pas besoin de s’occuper des indices.
Si on est torturé on peut toujours le faire ^^:
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%5B%5D%20%3D%20%22Copieur%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Jet%20d’encre%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Laser%22%3B%0A%20%20%24papier%5B%5D%20%3D%20%22Photo%22%3B%0A%0A%20%20for%20(%24j%20%3D%200%20%3B%20%24j%20%3C%204%20%3B%20%2B%2B%24j)%0A%20%20%20%20echo%20%22%24j%3A%20%24papier%5B%24j%5D%3Cbr%3E%22%3B%0A%3F%3E » message= »exemple 6.4″ highlight= » » provider= »manual »/]
Tableaux associatifs
Cette fois l’indice n’est plus numérique mais alphanumérique.
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%5B’copieur’%5D%20%20%3D%20%22Photocopieur%20et%20multiusage%22%3B%0A%20%20%24papier%5B’jetencre’%5D%20%3D%20%22Imprimante%20%C3%A0%20jet%20d’encre%22%3B%0A%20%20%24papier%5B’laser’%5D%20%20%20%20%3D%20%22Imprimante%20laser%22%3B%0A%20%20%24papier%5B’photo’%5D%20%20%20%20%3D%20%22Papier%20d’impression%20photographique%22%3B%0A%0A%20%20echo%20%24papier%5B’laser’%5D%3B%0A%3F%3E » message= »exemple 6.5″ highlight= » » provider= »manual »/]
On peut également parcourir ce type de tableau avec foreach() comme ceci :
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24papier%5B’copieur’%5D%20%20%3D%20%22Photocopieur%20et%20multiusage%22%3B%0A%20%20%24papier%5B’jetencre’%5D%20%3D%20%22Imprimante%20%C3%A0%20jet%20d’encre%22%3B%0A%20%20%24papier%5B’laser’%5D%20%20%20%20%3D%20%22Imprimante%20laser%22%3B%0A%20%20%24papier%5B’photo’%5D%20%20%20%20%3D%20%22Papier%20d’impression%20photographique%22%3B%0A%0A%20%20foreach%20(%24papier%20as%20%24key%20%3D%3E%20%24value)%20%7B%0A%20%20%09echo%20%22La%20clef%20est%20%24key%20et%20la%20valeau%20est%20%24value%20%3Cbr%3E%22%3B%0A%20%20%7D%0A%3F%3E » message= »exemple 6.6″ highlight= » » provider= »manual »/]
Astuces :
- list()
Il peut arriver qu’on veuille transformer un tableau en une liste de variables.
On peut le faire comme ceci :
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20list(%24a%2C%20%24b)%20%3D%20array(‘Alice’%2C%20’Julie’)%3B%0A%20%20echo%20%22a%3D%24a%20b%3D%24b%22%3B%0A%3F%3E » message= » » highlight= » » provider= »manual »/]
- is_array() : permet de savoir si la variable est un tableau
- count() : compte le nombre d’élément d’un tableau. Exemple : count($email)
- sort() : permet de trier un tableau dans l’ordre croissant. Cela modifie le tableau.
- rsort() : permet de trier un tableau dans l’ordre décroissant. Cela modifie le tableau.
- shuffle(): mélange les éléments du tableau de manière aléatoire. Cela modifie le tableau.
- explode(): permet d’éclater une chaine de caractère en un tableau. Il prend en paramètre le critère.
Exemple :
[pastacode lang= »php » manual= »%3C%3Fphp%0A%20%20%24temp%20%3D%20explode(‘%20’%2C%20%22Ceci%20est%20une%20phrase%20de%20sept%20mots%22)%3B%0A%20%20print_r(%24temp)%3B%0A%3F%3E » message= »exemple 6.7″ highlight= » » provider= »manual »/]
Le résultat est :
[pastacode lang= »markup » manual= »Array%20(%20%5B0%5D%20%3D%3E%20Ceci%20%5B1%5D%20%3D%3E%20est%20%5B2%5D%20%3D%3E%20une%20%5B3%5D%20%3D%3E%20phrase%20%5B4%5D%20%3D%3E%20de%20%5B5%5D%20%3D%3E%20sept%20%5B6%5D%20%3D%3E%20mots%20) » message= » » highlight= » » provider= »manual »/]
Exercice très intéressant 😉
Créez un tableau contenant une liste d’adresses e-mail. Extrayez le nom du serveur de ces données ( exemple : php5@free.com le serveur est free.com ), puis réalisez des statistiques sur les occurrences de chaque fournisseur d’accès.
Exemple de tableau possible :
$tab=array(« php5@free.com », »jean556@fiscali.fr », »machine@waladoo.fr », »webmestre@waladoo.fr », »pauldeux@fiscali.fr », »macafi@fiscali.fr »);
Correction :
[pastacode lang= »php » manual= »%3C%3Fphp%0A%2F%2FTableau%20des%20adresses%20mail%0A%24tab%3Darray(%22php5%40free.com%22%2C%22jean556%40fiscali.fr%22%2C%22machine%40waladoo.fr%0A%22%2C%22webmestre%40waladoo.fr%22%2C%22pauldeux%40fiscali.fr%22%2C%22macafi%40fiscali.fr%22)%0A%3B%0A%0A%2F%2FR%C3%A9cup%C3%A9ration%20des%20noms%20de%20domaine%0Aforeach(%24tab%20as%20%24ind%3D%3E%24val)%0A%7B%0A%09%24dom%3Dexplode(%22%40%22%2C%24val)%3B%0A%09%24domaine%5B%5D%3D%24dom%5B1%5D%3B%0A%7D%0A%0A%2F%2FCompte%20du%20nombre%20d’occurences%20de%20chaque%20domaine%0A%24stat%3Darray_count_values%20(%24domaine)%3B%0A%0A%2F%2FNombre%20total%20d’adresses%0A%24total%3Dcount(%24tab)%3B%0A%0A%2F%2FOu%20encore%0A%2F%2F%24total%3Darray_sum(%24stat)%3B%0A%2F%2FCalcul%20des%20pourcentages%0Aforeach(%24stat%20as%20%24fourn%3D%3E%24nb)%0A%7B%0A%09%24pourcent%5B%24fourn%5D%3D%24nb%2F%24total*100%3B%0A%09echo%20%22Fournisseur%20d’acc%C3%A8s%20%3A%20%24fourn%20%3D%20%22%2Cround(%24pourcent%5B%24fourn%5D%2C2)%2C%22%20%25%20%3Cbr%20%2F%3E%22%3B%0A%7D%0A%3F%3E » message= »Correction de l’exercice » highlight= » » provider= »manual »/]
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.
