(PHP 4, PHP 5, PHP 7, PHP 8)
extract — Importa le variabili nella tabella dei simboli corrente da un array
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.
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
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
.
EXTR_PREFIX_ALL
prefix
.
EXTR_PREFIX_INVALID
prefix
solo ai nomi di variabili
non valide/numeriche.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
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.
Restituisce il numero di variabili importate con successo nella tabella dei simboli.
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.
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.