Denne funktion bruges til at fremstille variabler fra et array.
Den tager et associativ array var_array
og behandler
nøglerne som variablenavne og værdierne som de nye variablers værdier.
For hvert nøgle/værdi par vil den lave en variable, alt efter hvad
extract_type
og
prefix
er sat til.
Bemærk: Vi starter ved version 4.0.5, hvor denne funktion returnerede antallet af variabler som blev udpakket.
Bemærk: EXTR_IF_EXISTS og EXTR_PREFIX_IF_EXISTS blev tilføjet i version 4.2.0.
Bemærk: EXTR_REFS blev tilføjet i version 4.3.0.
extract() kontrollerer hver nøgle for at se om
det er et korrekt variablenavn. Den tjekker også for om der allerede
er sat en variable med det navn. Måden ukorrekte variablenavne og
sammenfald med tidligere variabler skal behandles på, bestemmes ved
parameteren extract_type
. Den kan blive sat til
en af følgende værdier:
Hvis der er et sammenfald, overskriv den eksisterende variable.
Hvis der er et sammenfald, overskriv ikke den eksisterende variable.
Hvis der er et sammenfald, tilføj prefix
foran variablenavnet.
Start alle variabelnavne med prefix
.
I PHP 4.0.5 ville det også inklidere nummervariabler.
Indsæt kun prefix
foran ukorrekte/nummer
variabler. Denne mulighed blev tilføjet i PHP 4.0.5.
Overskriver kun variablen hvis den allerede findes og ellers skal den ikke gøre noget. Dette er brugbart ved definering af en liste af korrekte variablenavne og man derefter udpakker de variabler der er blevet sat med f.eks. $_REQUEST. Denne mulighed blev tilføjet i PHP 4.2.0.
Fremstiller kun variablenavne med prefix, hvis den orginale version af samme variable allerede findes. Denne mulighed blev tilføjet i PHP 4.2.0.
Udpakker alle variabler som referencer. Det betyder at de nye variabler
peger på de værdier der står i var_array
parameteren. Du kan bruge denne indstilling som den eneste eller du
kan sætte den sammen med andre værdier ved at indsætte OR
mellem de to settings i extract_type
.
Denne indstilling blev muligt i PHP 4.3.0.
Hvis extract_type
ikke er sat, vil den som
som standard blive sat til EXTR_OVERWRITE.
Bemærk at prefix
kun er krævet hvis
extract_type
er EXTR_PREFIX_SAME,
EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID
eller EXTR_PREFIX_IF_EXISTS. Hvis variabelnavnet
med prefix foran, ikke er et korrekt variablenavn, vil den variable ikke
blive oprettet.
extract() returnerer antallet af variabler der er blevet oprettet korrekt.
Advarsel |
Brug ikke extract() ved usikker data som f.eks.
bruger-input ($_GET, ...). Hvis du gør dette, f.eks. hvis du ønsker at
køre gammel kode som ikke bruger
register_globals, vær sikker
på at du bruger en af de ikke overskrivende indstillinger
|
Et eksempel hvor brugen af extract() ville være perfekt, er ved et associativt array fra funktionen wddx_deserialize().
Variablen $size
blev ikke overskrevet, fordi vi havde
sat EXTR_PREFIX_SAME, hvilket resultere i
$wddx_size
bliver lavet. Hvis EXTR_SKIP
var bestemt, ville $wddx_size ikke engang blive lavet.
EXTR_OVERWRITE ville have betydet at $size
havde fået værdien "medium" og EXTR_PREFIX_ALL
ville have betydet nye variablenavne kaldet $wddx_color
,
$wddx_size
og $wddx_shape
.
Du skal bruge et associativt array. Et array indekseret med numre vil ikke komme med et resultat med mindre at du bruger EXTR_PREFIX_ALL eller EXTR_PREFIX_INVALID.
Se også compact().