Dans PHP, il existe beaucoup de façons différentes pour obtenir des tableaux. Nous avons vu précédemment comment créer des tableaux en affectant directement des valeurs à des indices. Il existe aussi beaucoup de fonctions qui permettent soit de créer des tableaux ex-nihilo, soit d'obtenir des tableaux à partir d'autres données (chaînes, variables, autres tableaux).

### Créer un tableau avec array()

Dans les exemples qui suivent, la fonction infoTableau() est utilisée pour afficher le nombre d'éléments du tableau et pour en faire un dump. Cette fonction se trouve dans bib_fonctions.php. Son code est le suivant :

    /**
     * Envoie à la sortie standard le nombre
     * d'éléments et le contenu d'un tableau
     *
     * @param array	$t	Tableau
     */
    function infoTableau($t) {
    	echo 'Tableau de ', count($t), ' éléments',
    			'<pre>', print_r($t, true), '</pre>';
    }

La structure du langage array() permet de créer un tableau à partir des arguments qui lui sont passés. Elle est pratique pour créer des tableaux de petite taille et dont connait la valeur et/ou la clé des éléments à l'avance.

Exemple : créer des tableaux avec array()
<?php require('bib_fonctions.php'); htmlDebut('Créer des tableaux avec array()'); htmlInfo('Tableau vide'); $t = array(); infoTableau($t); htmlInfo('Tableau à indices numériques'); $t = array('François', 'Piat', 409, '03 81 66 20 66'); infoTableau($t); htmlInfo('Tableau associatif'); $t = array('B41d' => 'Pierre', 'C24a' => 'Paul', 'D12z' => 'Jacques'); infoTableau($t); htmlFin(); ?>

### Tableaux d'entiers ou de lettres

La fonction range() crée un tableau à indices numériques d'entiers ou de lettres dans une fourchette dont les limites sont passées en arguments.

Exemple : suite d'entiers ou de lettres
<?php require('bib_fonctions.php'); htmlDebut('Suite d\'entiers ou de lettres'); htmlInfo('Suite de nombres par ordre croissant'); $t = range(1560, 1568); infoTableau($t); htmlInfo('Suite de lettres par ordre croissant'); $t = range('g', 'k'); infoTableau($t); htmlInfo('Suite de nombres par ordre décroissant'); $t = range(702, 698); infoTableau($t); htmlInfo('Suite de lettres par ordre décroissant'); $t = range('f', 'a'); infoTableau($t); htmlFin(); ?>

### Tableaux initialisés avec une même valeur

La fonction array_fill() crée un tableau à indices numériques dont tous les éléments ont la même valeur. La fonction accepte 3 paramètres :

- l'indice de début du tableau,
- le nombre d'éléments,
- la valeur des élements

Très pratique pour créer un tableau initialisé.

Exemple : tableau avec une valeur unique
<?php require('bib_fonctions.php'); htmlDebut('Tableau avec une valeur unique'); htmlInfo('Tableau de 5 éléments initialisés à 0'); $t = array_fill(0, 5, 0); infoTableau($t); htmlInfo('Tableau de 4 éléments initialisés à "piat"'); $t = array_fill(10, 4, 'piat'); infoTableau($t); htmlInfo('Tableau à 2 dimensions initialisé à 1'); $t = array_fill(0, 3, array_fill(0, 4, 1)); infoTableau($t); htmlFin(); ?>

### Tableaux à partir de listes de variables

La fonction compact() crée un tableau associatif à partir d'une liste de variables passées en argument. Les éléments ont pour clé le nom des variables et pour valeur la valeur des variables. Les variables peuvent être passées sous la forme d'une liste de noms séparés par des virgules, ou sous la forme d'un tableau.

Exemple : tableau de variables
<?php require('bib_fonctions.php'); htmlDebut('Tableau de variables'); $nom = 'Piat'; $prenom = 'François'; $bureau = 407; $mail = 'francois.piat@univ-fcomte.fr'; $t = compact('nom', 'prenom', 'bureau', 'mail'); infoTableau($t); $t = compact(array('nom', 'prenom', 'bureau')); infoTableau($t); htmlFin(); ?>

### Tableaux à partir d'une chaîne de caractères

La fonction explode() crée un tableau à indices numériques à partir d'une chaîne de caractères et d'un délimiteur de zone. Le délimiteur peut être n'importe quel caractère alphanumérique, ou ensemble de caractères.

Exemple : tableau à partir d'une chaîne
<?php require('bib_fonctions.php'); htmlDebut('Tableau à partir d\'une chaîne'); htmlInfo('Délemiteur virgule'); $a = 'François,Piat,409,francois.piat@univ-fcomte.fr'; $t = explode(',', $a); infoTableau($t); htmlInfo('Délimiteur /'); $a = '25/08/2012'; $t = explode('/', $a); infoTableau($t); htmlFin(); ?>