Avant d'écrire ses propres fonctions de traitement, il est utile de jeter un oeil sur la documentation PHP car souvent la fonction désirée existe déjà en natif. Quelques exemples.

### Somme des valeurs d'un tableau

La fonction array_sum() additionne les valeurs contenues dans un tableau à indices numériques ou associatif.

Exemple : somme des valeurs
<?php require('bib_fonctions.php'); htmlDebut('Somme des valeurs'); $t['Pierre'] = 15; $t['Paul'] = 12; $t['Jacques'] = 16; $t['François'] = 8; htmlInfo('Somme des notes'); echo array_sum($t); htmlInfo('Moyenne des notes'); echo array_sum($t) / count($t); htmlFin(); ?>

### Appliquer une fonction à tous les éléments d'un tableau

La fonction array_walk() permet d'appliquer une fonction utilisateur à tous les éléments d'un tableau. array_walk() accepte deux ou trois arguments :

- le tableau sur lequel passer la fonction
- le nom de la fonction à appliquer, sous la forme d'une chaîne de caractères,
- un argument à passer éventuellement à la fonction à appliquer.

La fonction à appliquer :

- ne peut pas être une fonction standard PHP, mais obligatoirement une fonction définie par le développeur,
- reçoit automatiquement 2 paramètres : la valeur et la clé de l'élément,
- reçoit éventuellement un paramètre supplémentaire libre.

L'exemple suivant produit l'affichage d'un tableau sous la forme d'une table HTML. Chaque ligne de la table HTML correspond à un élément du tableau et la mise en forme est faite simplement avec les tags tr et td dans la fonction tableHTML().

Exemple : fonction appliquée à un tableau
<?php require('bib_fonctions.php'); htmlDebut('Fonction appliquée à un tableau'); $t['B41d'] = 'Pierre'; $t['C24a'] = 'Paul'; $t['D12z'] = 'Jacques'; $t[409] = 'François'; htmlInfo('Mise en forme du tableau'); echo '<table border="1" cellpadding="4">', '<tr><th>Bureau</th><th>Occupant</th></tr>'; array_walk($t, 'tableHTML'); echo '</table>'; htmlFin(); //===================================================== function tableHTML($valeur, $cle) { echo '<tr><td>', $cle, '</td><td>', $valeur, '</td></tr>'; } ?>

Ce qui peut être intéressant c'est de faire un traitement sur tous les éléments d'un tableau et que le résultat du traitement remplace l'élément original dans le tableau. Pour réaliser cela, il faut utiliser le passage d'argument par référence (avec le symbole &) dans la fonction de traitement.

Dans l'exemple suivant un tableau stocke les notes d'étudiants. On applique à ce tableau une fonction qui calcule la moyenne de chaque étudiant, et remplace les notes par cette moyenne.

Exemple : fonction appliquée à un tableau
<?php require('bib_fonctions.php'); htmlDebut('Fonction appliquée à un tableau'); $t['Pierre'] = array(12, 15, 14); $t['Paul'] = array(12, 8, 12); $t['Jacques'] = array(14, 13, 16); htmlInfo('Avant calcul de la moyenne'); infoTableau($t); htmlInfo('Après calcul de la moyenne'); array_walk($t, 'calculer'); infoTableau($t); //===================================================== function calculer(&$valeur, $cle) { $moyenne = array_sum($valeur) / count($valeur); $valeur = round($moyenne, 2); } htmlFin(); ?>

### Mélanger un tableau

La fonction shuffle() est un moyen très pratique pour mélanger les éléments d'un tableau. Toutes les clés, numériques et alphabétiques, sont remplacées par des entiers consécutifs commençant à 0. Un tableau associatif sur lequel on applique la fonction shuffle() devient donc un tableau à indices numériques et on perd les clés initiales.

Exemple : mélanger un tableau
<?php require('bib_fonctions.php'); htmlDebut('Mélanger un tableau'); $t = range(1,10); htmlInfo('Mélanger un tableau à indices numériques'); shuffle($t); infoTableau($t); //--------------------------------------- $t = array(); $t['B41d'] = 'Pierre'; $t['C24a'] = 'Paul'; $t['D12z'] = 'Jacques'; $t[409] = 'François'; htmlInfo('Mélanger un tableau associatif'); shuffle($t); infoTableau($t); htmlFin(); ?>

### Retourner un tableau

La fonction array_reverse() retourne un tableau : le premier élément devient le dernier, le second devient l'avant-dernier, etc. Les clés numériques sont renumérotées en commençant à 0, les clés alphabétiques ne sont pas changées.

Exemple : retourner un tableau
<?php require('bib_fonctions.php'); htmlDebut('Retourner un tableau'); $t['B41d'] = 'Pierre'; $t['C24a'] = 'Paul'; $t['D12z'] = 'Jacques'; $t[409] = 'François'; htmlInfo('Tableau initial'); infoTableau($t); htmlInfo('Tableau retourné'); $t = array_reverse($t); infoTableau($t); htmlFin(); ?>