Manuale PHP
Indietro |  | Avanti

# extract

(PHP 3 >= 3.0.7, PHP 4, PHP 5)

extract -- Importa le variabili nella tabella dei simboli

## Descrizione

int extract ( array 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` e `EXTR_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`

  Se avviene una collisione, sovrascrive la variabile esistente.

`EXTR_SKIP`

  Se avviene una collisione, non sovrascrive la variabile esistente.

`EXTR_PREFIX_SAME`

  Se avviene una collisione, mette come prefisso al nome della variabile il parametro prefix.

`EXTR_PREFIX_ALL`

  Mette come prefisso di tutte le variabili il parametro prefix. Dal PHP 4.0.5 questo avviene anche per i valori numerici.

`EXTR_PREFIX_INVALID`

  Mette come prefisso, solo per i nomi di variabili invalidi/numerici, il parametro prefix. Questa opzione è stata aggiunta in PHP 4.0.5.

`EXTR_IF_EXISTS`

  Sovrascrive la variabile solo se già esiste nella tabella dei simboli, altrimenti non fa nulla. Questo è utile per definire una lista di variabili valide e quindi estrarre solo quelle variabili definite in $_REQUEST, per esempio. Questa opzione è stata aggiunta in PHP 4.2.0.

`EXTR_PREFIX_IF_EXISTS`

  Crea nomi di variabili con il prefisso solo se la versione senza prefisso della stessa variable esiste nella tabella dei simboli. Questa opzione è stata aggiunta in PHP 4.2.0.

`EXTR_REFS`

  Estrae le variabili come riferimenti. Questo in effetti significa che i valori delle variabili importate referenziano i valori del parametro 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.

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

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

Indietro | Partenza | Avanti
end | Risali | in_array