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()