Tableau : conversion de valeurs
En PHP, il est courant d’extraire des sous-parties d’un tableau, de les convertir en variables, de convertir un tableau en chaîne ou faire l’opération inverse, ou encore de remplacer des anciennes valeurs d’un tableau par des nouvelles.
Conversion en variables
Pour récupérer les valeurs d’un tableau et les convertir en variables, utilisez la fonction list(). Elle prend en paramètres une liste de variables. La première variable récupère la première valeur, la seconde se verra affecter la valeur suivante, etc..
1
2
3
4
5
|
<?php $tab = array ( 'daniel' , 'isabelle' , 'david' , 'robert' , 'antoine' ); list( $nom1 , $nom2 , $nom3 , $nom4 , $nom5 ) = $tab ; echo $nom1 . "----" . $nom5 ; ?> |
Affichage
daniel ---- antoine
Si le tableau est associatif, utilisez la fonction extract() à la place de la fonction list().
1
2
3
4
5
|
<?php $tab = array ( 'nom' => 'daniel' , 'age' =>30, 'taille' => 170); extract( $tab ); echo $nom . " - " . $age ; ?> |
Affichage
daniel - 30
Gérer les collisions
Pour éviter une collision (une variable créée par la fonction extract() peut porter le même nom qu’une variable existante), vous pouvez utilisez un deuxième paramètre dont les valeurs possibles sont:
- EXTR_OVERWRITE : lors d’une collision, réécrire la variable existante.
- EXTR_SKIP : lors d’une collision, ne pas réécrire la variable existante.
- EXTR_PREFIX_SAME : lors d’une collision, ajouter le préfixe prefix, et créer une nouvelle variable.
- EXTR_PREFIX_ALL : ajouter le préfixe prefix pour toutes les variables.
- EXTR_PREFIX_INVALID : préfixer uniquement les variables aux noms invalides ou numériques avec le préfixe prefix.
- EXTR_IF_EXISTS : ecrase la variable uniquement si elle existe déjà dans la table des symboles, et, sinon, ne rien faire. Ceci est pratique pour définir une liste de variables valides, puis extraire du tableau les valeurs que vous avez déjà définies grâce à $_REQUEST, par exemple.
- EXTR_PREFIX_IF_EXISTS : ne crée que des variables préfixées, si la version non préfixée de la même variable existe dans la table des symboles courante.
- EXTR_REFS : extrait les variables sous forme de références. Cela signifie que les valeurs des variables importées font toujours référence aux valeurs des variables d’origine dans le paramètre array. Vous pouvez utiliser cette option seule, ou bien la combiner avec d’autres options avec l’opérateur OR, dans le deuxième paramètre.
1
2
3
4
5
6
7
8
|
<?php $nom = 'david' ; $tab = array ( 'nom' => 'daniel' , 'age' =>30, 'taille' => 170); extract( $tab ,EXTR_PREFIX_SAME, 'prefix' ); echo $nom . " - " . $age ; echo '<br>' ; echo $prefix_nom . " - " . $age ; ?> |
Affichage
david - 30
daniel - 30
Dans cet exemple, PHP a rajoutée la valeur ‘prefix_’ devant la clé ‘nom’ du tableau. Si le deuxième paramètre est omis, extract() utilisera EXTR_OVERWRITE par défaut.
Sérialisation de tableaux
Une opération utile consiste à convertir les valeurs d’un tableau en chaîne. La fonction implode() prend en paramètres une chaîne séparatrice et un tableau.
1
2
3
4
5
|
<?php $tab = array ( 'daniel' , 'isabelle' , 'david' , 'robert' , 'antoine' ); $chaine = implode( "-" , $tab ); echo $chaine ; ?> |
Affichage
daniel-isabelle-david-robert-antoine
La fonction explode() est l’opération inverse qui consiste à séparer une chaîne pour former un tableau. Elle prend en paramètres un séparateur et une chaîne.
1
2
3
4
5
|
<?php $chaine = 'daniel-isabelle-david-robert-antoine' $tab = explode ( '-' , $tab ); print_r( $tab ); ?> |
Affichage
Array ( [0] => daniel [1] => isabelle [2] => david [3] => robert [4] => antoine )