extract

extract -- Importiert Variablen eines Arrays in die aktuelle Symboltabelle

Beschreibung

int extract ( array var_array [, int extract_type [, string prefix]])

Diese Funktion wird verwendet , um Variablen eines Arrays in die aktuelle Symboltabelle zu importieren . Es behandelt die Schlüssel des assoziativen Arrays var_array als Variablennamen , und die Werte als Variablenwerte . Für jedes Paar Schlüssel / Wert wird - abhängig von den Parametern extract_type und prefix - eine Variable in der aktuellen Symboltabelle eingetragen .

Anmerkung : Seit Version 4.0.5 gibt diese Funktion die Anzahl der extrahierten Variablen zurück .

Anmerkung : EXTR_IF_EXISTS und EXTR_PREFIX_IF_EXISTS wurde in Version 4.2.0 . eingeführt .

Anmerkung : EXTR_REFS wurde in Version 4.3.0 eingeführt .

extract( ) prüft jeden Schlüssel , ob dieser einen gültigen Variablennamen ergibt , und auch auf eventuelle Kollisionen mit existierenden Variablen in der Symboltabelle . Die Art , wie ungültige / numerische Schlüssel und Kollisionen behandelt werden , wird mit extract_type spezifiziert . Es kann einen der folgenden Werte annehmen :

EXTR_OVERWRITE

Im Falle einer Kollision wird die existierende Variable überschrieben .

EXTR_SKIP

Im Falle einer Kollision wird die existierende Variable nicht überschrieben .

EXTR_PREFIX_SAME

Im Falle einer Kollision wird dem Variablennamen prefix vorangestellt .

EXTR_PREFIX_ALL

Allen Variablennamen wird prefix vorangestellt . Seit PHP 4.0.5 gilt dies auch für numerische Variablen .

EXTR_PREFIX_INVALID

Nur ungültigen / numerischen Variablennamen wird prefix vorangestellt . Dieser Flag wurde mit PHP 4.0.5 eingeführt .

EXTR_IF_EXISTS

Überschreibt die Variable nur , wenn sie bereits in der aktuellen Symboltabelle existiert , sonst geschieht nichts . Dies ist dann hilfreich , wenn Sie eine Liste mit gültigen Variablen definieren , und dann z.B . nur jene Variablen extrahieren , welche Sie aus $_REQUEST definiert haben . Dieser Flag wurde in PHP 4.2.0 eingeführt .

EXTR_PREFIX_IF_EXISTS

Erstellt nur Variablennamen mit Präfix , wenn die Version ohne Präfix der selben Variable in der aktuellen Symboltabelle existiert . Dieser Flag wurde in PHP 4.2.0 eingeführt .

EXTR_REFS

Extrahiert Variablen als Referenzen . Das heißt , dass die Werte der importierten Variablen noch immer auf die Werte des Parameters var_array referenzieren . Sie können diesen Flag alleine oder auch in Kombination mit einem anderen Flag verwenden , indem Sie Oder-Verknüpfungen im extract_type erstellen . Dieser Flag wurde in PHP 4.3.0 eingeführt .



Ist extract_type nicht spezifiziert , so wird EXTR_OVERWRITE angenommen .

Beachten Sie , dass prefix nur dann nötig ist , wenn extract_type EXTR_PREFIX_SAME , EXTR_PREFIX_ALL , EXTR_PREFIX_INVALID , oder EXTR_PREFIX_IF_EXISTS ist . Ist das Resultat trotz Präfix kein gültiger Variablenname , wird es nicht in die Symboltabelle importiert .

extract( ) gibt die Anzahl erfolgreich in die Symboltabelle importierter Variablen zurück .

Eine mögliche Verwendung für extract ist der Import der Variablen in einem von wddx_deserialize( ) gelieferten assoziativen Array in die Symboltabelle .

Beispiel 1 . extract( )

 
?php

 
/

 
*

 
Annahme

 
:

 
$var_array

 
ist

 
ein

 
von

 
wddx_deserialize

 
zurückgegebenes

 
Array

 
*

 
/

 
$groesse

 
=

 
"

 
groß"

 
;

 
$var_array

 
=

 
array

 
("farbe

 
"

 
=

 
"blau"

 
,

 
"groesse

 
"

 
=

 
"mittel"

 
,

 
"form

 
"

 
=

 
"Kugel")

 
;

 
extract

 
($var_array

 
,

 
EXTR_PREFIX_SAME

 
,

 
"wddx")

 
;

 
print

 
"$farbe

 
,

 
$groesse

 
,

 
$form

 
,

 
$wddx_groesse\n"

 
;

 

?





Das obige Beispiel wird folgendes ausgeben :

 
blau

 
,

 
groß

 
,

 
Kugel

 
,

 
mittel





$size wurde nicht überschrieben , da wir EXTR_PREFIX_SAME spezifiziert haben , was im Anlegen von $wddx_size $size wurde nicht überschrieben , da wir EXTR_PREFIX_SAME spezifiziert haben , was im Anlegen von $wddx_size endete . Wäre EXTR_SKIP spezifiziert worden , dann wäre $wddx_size nicht angelegt worden . EXTR_OVERWRITE hätte $size mit dem Wert " medium " überschrieben , und EXTR_PREFIX_ALL hätte die neuen Variablen $wddx_color , $wddx_size , und $wddx_shape angelegt .

Sie müssen assoziative Arrays benutzen , numerisch indizierte Arrays liefern keine Resultate .

Siehe auch compact( ) .