extract
extract($array, $flags, $prefix)
Fait une variable de chaque élément d’un tableau : la clé devient son nom, la valeur son contenu. Elle renvoie le nombre de variables créées. C’est l’inverse de compact().
Paramètres
- $array – un tableau avec des clés texte.
- $flags – facultatif. EXTR_OVERWRITE par défaut écrase les variables existantes, EXTR_SKIP les laisse intactes, EXTR_PREFIX_ALL ajoute un préfixe à tous les noms.
- $prefix – le préfixe pour les options EXTR_PREFIX_*. Un tiret bas le sépare du nom.
Exemples
$data = array("name" => "Jean", "age" => 30);
// renvoie le nombre de variables créées
echo extract($data); // 2
echo $name . ", " . $age; // Jean, 30
// par défaut, une variable existante est écrasée
$color = "bleu";
extract(array("color" => "rouge"));
echo $color; // rouge
// EXTR_SKIP laisse intactes les variables existantes
$color = "bleu";
extract(array("color" => "vert"), EXTR_SKIP);
echo $color; // bleu
// EXTR_PREFIX_ALL : toutes les variables reçoivent un préfixe
extract(array("id" => 5), EXTR_PREFIX_ALL, "article");
echo $article_id; // 5
// les clés qui ne sont pas un nom de variable valide sont ignorées
echo extract(array("mon-nom" => 1, "0" => 2, "ok" => 3)); // 1
Points d’attention
- Ne l’appelez jamais sur $_GET, $_POST, $_REQUEST ou $_COOKIE. Un visiteur pourrait alors définir ou écraser n’importe quelle variable du script, par exemple $loggedIn ou $id.
- Par défaut, elle écrase les variables existantes. Sur vos propres données, utilisez EXTR_SKIP ou un préfixe.
- Les variables apparaissent « de nulle part ». Le code source ne montre pas d’où elles viennent, et l’éditeur ne les connaît pas.
- Lire les valeurs directement dans le tableau est plus lisible et plus sûr : $data["name"].
Fonctions associées :
compact()
get_defined_vars()
array_key_exists()