extract

(PHP 4, PHP 5, PHP 7, PHP 8)

extractImporta le variabili nella tabella dei simboli corrente da un array

Descrizione

extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int

Importa le variabili nella tabella dei simboli corrente da un array.

Controlla ogni chiave per vedere se ha un nome di variabile valido. Controlla anche le collisioni con le variabili esistenti nella tabella dei simboli.

Avviso

Non usare extract() su dati non attendibili, come l'input dell'utente (per esempio $_GET, $_FILES).

Elenco dei parametri

array

Un array associativo. Questa funzione tratta le chiavi come nomi di variabili e i valori come valori di variabili. Per ogni coppia chiave/valore verrà creata una variabile nella tabella dei simboli corrente, soggetta ai parametri flags e prefix.

È necessario utilizzare un array associativo; un array indicizzato numericamente non produrrà risultati a meno che non si utilizzi EXTR_PREFIX_ALL o EXTR_PREFIX_INVALID.

flags

Il modo in cui vengono trattate le chiavi non valide/numeriche e le collisioni è determinato dai flag di estrazione. Può essere uno dei seguenti valori:

EXTR_OVERWRITE
In caso di collisione, sovrascrivi la variabile esistente.
EXTR_SKIP
In caso di collisione, non sovrascrivere la variabile esistente.
EXTR_PREFIX_SAME
In caso di collisione, anteporre al nome della variabile il prefisso prefix.
EXTR_PREFIX_ALL
Prefissa tutti i nomi delle variabili con prefix.
EXTR_PREFIX_INVALID
Aggiunge il prefisso prefix solo ai nomi di variabili non valide/numeriche.
EXTR_IF_EXISTS
Sovrascrive la variabile solo se esiste già nella tabella dei simboli corrente, altrimenti non fa nulla. Questo è utile per definire un elenco di variabili valide e quindi estrarre solo quelle variabili che sono state definite in $_REQUEST, per esempio.
EXTR_PREFIX_IF_EXISTS
Crea nomi di variabili con prefisso solo se la versione senza prefisso della stessa variabile esiste nella tabella dei simboli corrente.
EXTR_REFS
Estrae le variabili come riferimenti. Ciò significa effettivamente che i valori delle variabili importate fanno ancora riferimento ai valori del parametro array. Si può usare questo flag da solo o combinarlo con qualsiasi altro flag utilizzando l'OR dei flags.

Se flags non è specificato, si presume che sia EXTR_OVERWRITE.

prefix

Notare che prefix è richiesto solo se flags è EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID o EXTR_PREFIX_IF_EXISTS. Se il risultato con prefisso non è un nome di variabile valido, non viene importato nella tabella dei simboli. I prefissi vengono separati automaticamente dalla chiave dell'array da un carattere underscore.

Valori restituiti

Restituisce il numero di variabili importate con successo nella tabella dei simboli.

Esempi

Example #1 Esempio di extract()

Un possibile utilizzo di extract() è importare nella tabella dei simboli le variabili contenute in un array associativo restituito da wddx_deserialize().

<?php

/* Si supponga che $var_array sia un array restituito da
wddx_deserialize */

$size = "grande";
$array_variabili = array("color" => "blu",
"size" => "media",
"shape" => "sfera");
extract($array_variabili, EXTR_PREFIX_SAME, "wddx");

echo
"$color, $size, $shape, $wddx_size\n";

?>

Il precedente esempio visualizzerà:

blu, grande, sfera, media

$size non è stato sovrascritto perché abbiamo specificato EXTR_PREFIX_SAME, che ha portato alla creazione di $wddx_size. Se fosse stato specificato EXTR_SKIP, allora $wddx_size non sarebbe nemmeno stato creato. EXTR_OVERWRITE avrebbe fatto sì che $size avesse il valore "medio" e EXTR_PREFIX_ALL avrebbe comportato nuove variabili con nomi $wddx_color, $wddx_size e $wddx_shape.

Note

Avviso

Non utilizzare extract() su dati non attendibili, come l'input dell'utente (per esempio $_GET, $_FILES, ecc.). In tal caso, assicurarsi di utilizzare uno dei valori di flags che non sovrascrivono come EXTR_SKIP e tenere presente che si dovrebbe estrarre nello stesso ordine definito in variables_order all'interno del php.ini.

Vedere anche:

  • compact() - Crea un array contenente variabili e il loro valore
  • list() - Assegna valori a delle variabili come se fossero un array