Forum und email

extract

(PHP 4, PHP 5)

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.

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

Note: EXTR_IF_EXISTS en EXTR_PREFIX_IF_EXISTS werden toegevoegd in versie 4.2.0.

Note: 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().

Example#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_arrayEXTR_PREFIX_SAME"wddx");

print 
"$color, $size, $shape, $wddx_size\n";

?>

De output van het bovenstaande programma ziet er zo uit:

blue, large, sphere, medium

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