extract

extract -- Importeer variabelen naar de current symbol table vanuit een array

Beschrijving

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

Deze functie wordt gebruikt om variabelen te importeren uit een array naar de huidige symbol table . Er wordt een associatieve array var_array meegegeven , en de keys daarvan worden als namen en de waarden als waarden voor de variabele gebruikt worden . Voor elk key / waarde paar zal de functie een variabele creeeren in de huidige symbol table , waarbij rekening wordt gehouden met de extract_type en prefix parameters .

Opmerking : Vanaf versie 4.0.5 geeft deze functie het aantal variabelen dat werd geimporteerd terug .

Opmerking : EXTR_IF_EXISTS en EXTR_PREFIX_IF_EXISTS werden toegevoegd in versie 4.2.0 .

Opmerking : EXTR_REFS werd toegevoegd in versie 4.3.0 .

extract( ) kijkt bij elke key of het een valide naam voor een variabele is . Ook wordt er gecheckt op botsingen met bestaande variabelen in de symbol table . Ongeldige / numerieke keys en botsingen worden volgens extract_type . Deze kan een van de volgende waarden hebben :

EXTR_OVERWRITE

Als er een botsing is moet de bestaande variabele overschreven worden .

EXTR_SKIP

Als er een botsing is moet de bestaande variabele intact gelaten worden .

EXTR_PREFIX_SAME

Als er een botsing is , zet dan prefix voor de naam van de variabele .

EXTR_PREFIX_ALL

Zet prefix voor de namen van alle variabelen . Vanaf PHP 4.0.5 geldt dit ook voor numerieke variabelen .

EXTR_PREFIX_INVALID

Zet alleen een prefix voor ongeldige en numerieke namen van variabelen . Deze flag werd toegevoegd in PHP 4.0.5 .

EXTR_IF_EXISTS

Overschrijf de variabele alleen als deze al bestaat in de huidige symbol table , en doe anders niets . Dit is bruikbaar om een lijst van geldige variabelen te genereren en vervolgens alleen deze variabelen te extraheren uit $_REQUEST , bijvoorbeeld . Deze flag werd toegevoegd in PHP 4.2.0 .

EXTR_PREFIX_IF_EXISTS

Maak alleen variabelen als de variant van de variabele zonder prefix al bestaat in de huidige symbol table . Deze flag werd toegevoegd in PHP 4.2.0 .

EXTR_REFS

Importeer variabelen als referenties . Dit betekent effectief dat de waarden van de geimporteerde variabelen nog steeds aan de waarden van de var_array parameter refereren . Deze flag kan alleen gebruikt worden of worden gecombineerd met een van de andere flags door hem via OR toe te voegen aan extract_type . Deze flag werd toegevoegd in PHP 4.3.0 .



Als extract_type niet is gegeven wordt aangenomen dat EXTR_OVERWRITE werd bedoeld .

Let erop dat prefix alleen hoeft te worden gegeven als extract_type de waarde EXTR_PREFIX_SAME , EXTR_PREFIX_ALL , EXTR_PREFIX_INVALID of EXTR_PREFIX_IF_EXISTS heeft . Als het resultaat met de toevoeging geen geldige naam voor een variabele is wordt deze niet toegevoegd aan de symbol table .

extract( ) geeft het aantal succesvol geimporteerde variabelen terug .

extract( ) kan gebruikt worden om variabelen in de symbol table te importeren die werden teruggegeven door wddx_deserialize( ) .

Voorbeeld 1 . extract( ) voorbeeld

 
?php

 
/

 
*

 
Stel

 
dat

 
$var_array

 
een

 
array

 
is

 
die

 
werd

 
teruggegeven

 
door

 
wddx_deserialize(

 
)

 
*

 
/

 
$size

 
=

 
"large"

 
;

 
$var_array

 
=

 
array

 
("color

 
"

 
=

 
"blue"

 
,

 
"size

 
"

 
=

 
"medium"

 
,

 
"shape

 
"

 
=

 
"sphere")

 
;

 
extract

 
($var_array

 
,

 
EXTR_PREFIX_SAME

 
,

 
"wddx")

 
;

 
print

 
"$color

 
,

 
$size

 
,

 
$shape

 
,

 
$wddx_size\n"

 
;

 

?





De output van het bovenstaande programma ziet er zo uit :






$size werd niet overschreven omdat EXTR_PREFIX_SAME was gespecificeerd , die ervoor zorgde dat $wddx_size werd aangemaakt . Als EXTR_SKIP was gegeven zou $wddx_size niet eens worden aangemaakt . EXTR_OVERWRITE zou ervoor gezorgd hebben dat $size de waarde " medium " zou hebben , en EXTR_PREFIX_ALL zou hebben gezorgd dat de nieuwe variabelen $wddx_color , $wddx_size , en $wddx_shape hadden geheten .

Er moet een associatieve array gebruikt worden . Een numeriek geindexeerde array zal geen resultaten produceren tenzij EXTR_PREFIX_ALL of EXTR_PREFIX_INVALID gebruikt wordt .

Zie ook compact( ) .