(PHP 4, PHP 5)
extract — Importa le variabili nella tabella dei simboli
$var_array
[, int $extract_type
[, string $prefix
]] )
Questa funzione viene usata per importare delle variabili da un array nella
tabella dei simbloi corrente. Riceve un array associativo
var_array
e interpreta le chiavi come nomi di
variabile e i valori come valori di variabile. Per ogni coppia chiave/valore
verrà creata una variabile nella tabella dei simboli corrente, coerentemente con
i parametri extract_type
e
prefix
.
Nota:
Dalla versione 4.0.5 questa funzione restituisce il numero di variabili estratte.
Nota:
EXTR_IF_EXISTS
eEXTR_PREFIX_IF_EXISTS
sono stati introdotti nella versione 4.2.0.
Nota:
EXTR_REFS
è stata introdotta nella versione 4.3.0.
extract() controlla ogni chiave per stabilire se
costituisce un nome valido di variabile e se ci sono collisioni con
variabili già esistenti nella tabella dei simboli. Il modo in cui vengono trattate le
chiavi invalide/numeriche e le collisioni è determinato da
extract_type
. Può essere uno dei
seguenti valori:
EXTR_OVERWRITE
EXTR_SKIP
EXTR_PREFIX_SAME
prefix
.
EXTR_PREFIX_ALL
prefix
. Dal PHP 4.0.5 questo avviene
anche per i valori numerici.
EXTR_PREFIX_INVALID
prefix
. Questa opzione è stata aggiunta in
PHP 4.0.5.
EXTR_IF_EXISTS
EXTR_PREFIX_IF_EXISTS
EXTR_REFS
var_array
. Si può usare questo flag
da solo o combinarlo con gli altri mediante un OR nel parametro
extract_type
. Questo flag è stato aggiunto nel PHP
4.3.0.
Se extract_type
non è specificato, si
assume che sia EXTR_OVERWRITE
.
Si noti che prefix
è richiesto solo se
extract_type
è EXTR_PREFIX_SAME
,
EXTR_PREFIX_ALL
, EXTR_PREFIX_INVALID
o EXTR_PREFIX_IF_EXISTS
. Se
il risultato non è un nome di variabile valido, non
viene importato nella tabella dei simboli.
extract() restituisce il numero di variabili importate con successo nella tabella dei simboli.
Non utilizzare extract() su dati non convalidati, come
gli input degli utenti ($_GET, ...). Se lo si deve fare, ad esempio per eseguire temporaneamente
vecchio codice basato su
register_globals,
sincerarsi di utilizzare uno dei valori di
extract_type
come
EXTR_SKIP
e ricordarsi che occorre estrarre
$_SERVER, $_SESSION,
$_COOKIE, $_POST e
$_GET in questo ordine.
Un possibile uso di extract() è quello di importare nella tabella dei simboli variabili contenute in un array associativo restituito da wddx_deserialize().
Example #1 esempio diextract()
<?php
/* Si supponga che $array_variabili sia un array restituito da
wddx_deserialize */
$dimensione = "grande";
$array_variabili = array("colore" => "blu",
"dimensione" => "media",
"forma" => "sfera");
extract($array_variabili, EXTR_PREFIX_SAME, "wddx");
echo "$colore, $dimensione, $forma, $wddx_dimensione\n";
?>
L'esempio mostrerà:
blu, grande, sfera, media
La variabile $dimensione non è stata sovrascritta, in quanto è
specificato EXTR_PREFIX_SAME
, che ha portato alla
creazione di $wddx_dimensione. Se fosse stato specificato EXTR_SKIP
,
$wddx_dimensione non sarebbe stata creata.
EXTR_OVERWRITE
avrebbe portato $dimensione ad assumere
il valore "medio", e EXTR_PREFIX_ALL
avrebbe fatto creare nuove variabili
chiamate $wddx_colore,
$wddx_dimensione e
$wddx_forma.
Si deve usare un array associativo, un array indicizzato numericamente
non produce risultati a meno di non usare
EXTR_PREFIX_ALL
o EXTR_PREFIX_INVALID
.
Vedere anche compact().