La fonction extract permet de créer et d’initialiser des variables à partir des clés et des valeurs des éléments d’un tableau associatif.
Utilisation de la fonction extract()
La signature de la fonction extract est la suivante :
extract ( $array [, $mode [, $prefixe ]] );
8 modes différents sont disponibles:
- EXTR_OVERWRITE : Si une variable du même nom existe, son contenu est remplacé (mode par défaut).
- EXTR_SKIP : Si une variable du même nom existe, celle-ci n’est pas remplacée.
- EXTR_PREFIX_SAME : Si une variable du même nom existe, une nouvelle variable est créée en utilisant le préfixe $prefixe.
- EXTR_PREFIX_ALL : Préfixe toutes les nouvelles variables avec le préfixe $prefixe.
- EXTR_PREFIX_INVALID : Préfixe uniquement les variables invalides ou numériques avec $prefixe.
- EXTR_IF_EXISTS : Écrase la variable uniquement si elle existe déjà.
- 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.
- 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
Les préfixes sont automatiquement séparés de l’index du tableau par un caractère de soulignement.
La fonction extract retourne le nombre de variables importées avec succès.
$nom = 'list'; /* Déclaration du tableau */ $array = array( 'langage' => 'php', 'nom' => 'extract', 'date' => '2009' ); extract ( $array ); echo $nom; /* affiche : extract */ extract ( $array, EXTR_SKIP ); echo $nom; /* affiche : list */ extract ( $array, EXTR_PREFIX_SAME, 'var_' ); echo $nom; /* affiche : list */ echo $var_nom; /* affiche : '' */ echo $var__nom; /* affiche : extract */ extract ( $array, EXTR_PREFIX_SAME, 'var' ); echo $nom; /* affiche : list */ echo $var_nom; /* affiche : extract */ extract ( $array, EXTR_PREFIX_ALL, 'var' ); echo $nom; /* affiche : list */ echo $var_nom; /* affiche : extract */ echo $var_langage; /* affiche : php */ echo extract ( $array ); /* affiche : 3 */