Opis
int
extract
( array tablica_zmiennych [, int typ_ekstrakcji [, string
prefiks]])
Ta
funkcja
służy
do
importowania
zmiennych
z
tablicy
do
bieżącej
tabeli
symboli
.
Pobiera
jako
parametr
tablicę
asocjacyjną
tablica_zmiennych
i
traktuje
klucze
jako
nazwy
zmiennych
a
wartości
jako
wartości
tych
zmiennych
.
Dla
każdej
pary
klucz
/
wartość
w
bieżącej
tabeli
symboli
będzie
stworzona
zmienna
,
zależna
od
parametrów
typ_ekstrakcji
i
prefiks
.
Notatka
:
Od
wersji
4.0.5
ta
funkcja
zwraca
liczbę
wyekstraktowanych
zmiennych
.
Notatka
:
Stałe
EXTR_IF_EXISTS
i
EXTR_PREFIX_IF_EXISTS
zostały
dodane
w
PHP
4.2.0
.
extract(
)
sprawdza
każdy
klucz
aby
sprawdzić
,
czy
zawiera
prawidłową
nazwę
zmiennej
a
także
czy
istnieją
kolizje
z
zmiennymi
istniejącymi
w
tablicy
symboli
.
Sposób
traktowania
złych
nazw
zmiennych
i
kolizji
jest
określony
przez
parametr
typ_ekstrakcji
.
Może
być
jedną
z
poniższych
wartości
:
- EXTR_OVERWRITE
-
Jeśli
istnieje
kolizja
,
nadpisz
istniejącą
zmienną
.
- EXTR_SKIP
-
Jeśli
istnieje
kolizja
,
nie
nadpisuj
istniejącej
zmiennej
.
- EXTR_PREFIX_SAME
-
Jeśli
istnieje
kolizja
,
na
początek
nazwy
zmiennej
wstaw
prefiks
.
- EXTR_PREFIX_ALL
-
Na
początek
każdej
nazwy
zmiennej
wstaw
prefiks
.
Od
PHP
4.0.5
dotyczy
to
także
nazw
numerycznych
.
- EXTR_PREFIX_INVALID
-
Wstaw
prefiks
na
początek
złych
/
numerycznych
nazw
.
Ta
flaga
została
dodana
w
PHP
4.0.5
.
- EXTR_IF_EXISTS
-
Nadpisz
tylko
zmienną
już
istniejącą
w
bieżącej
tablicy
symboli
.
Jest
to
przydatne
do
definiowania
listy
poprawnych
zmiennych
i
ekstraktuj
tylko
te
zmienne
które
zdefiniowano
na
przykład
w
$_REQUEST
.
Flaga
ta
została
dodana
w
PHP
4.2.0
.
- EXTR_PREFIX_IF_EXISTS
-
Przedrostek
zostanie
dodany
tylko
do
zmiennych
których
odpowiedniki
bez
przedrostka
już
istnieją
w
bieżącej
tablicy
symboli
.
Flaga
ta
została
dodana
w
PHP
4.2.0
.
Jeśli
typ_ekstrakcji
nie
został
podany
,
to
zakładana
jest
opcja
EXTR_OVERWRITE
.
Zauważ
,
że
parametr
prefiks
jest
wymagany
tylko
jeśli
typ_ekstrakcji
to
EXTR_PREFIX_SAME
,
EXTR_PREFIX_ALL
,
EXTR_PREFIX_INVALID
lub
EXTR_PREFIX_IF_EXISTS
.
Jeśli
nazwa
zmiennej
po
dodaniu
prefiksu
nie
jest
prawidłową
nazwą
zmiennej
,
nie
jest
importowana
do
tablicy
symboli
.
extract(
)
zwraca
liczbę
zmiennych
szczęśliwie
zaimportowanych
do
tablicy
symboli
.
Możliwy
jest
import
zmiennych
zawartych
w
tablicy
asocjacyjnej
zwróconej
przez
wddx_deserialize(
)
.
Przykład
1
.
Przykład
użycia
extract(
)
?php
/
*
Załóżmy
,
że
$tablica_zmiennych
jest
tablicą
zwróconą
przez
wddx_deserialize
*
/
$rozmiar
=
"
duży"
;
$tablica_zmiennych
=
array
("kolor
"
=
"niebieski"
,
"rozmiar
"
=
"średni"
,
"ksztalt
"
=
"kulisty")
;
extract
($tablica_zmiennych
,
EXTR_PREFIX_SAME
,
"wddx")
;
print
"$kolor
,
$rozmiar
,
$ksztalt
,
$wddx_rozmiar\n"
;
?
|
|
Powyższy
przykład
wyświetli
:
niebieski
,
duży
,
kulisty
,
średni
|
$rozmiar
nie
został
nadpisany
,
ponieważ
podany
został
parametr
EXTR_PREFIX_SAME
,
przez
co
stworzona
został
zmienna
$wddx_rozmiar
.
Jeśli
podana
by
była
flaga
EXTR_SKIP
,
to
zmienna
$wddx_rozmiar
nie
zostałaby
stworzona
.
Flaga
EXTR_OVERWRITE
spowodowałaby
,
że
zmienna
$rozmiar
miałaby
wartość
"
średni
"
,
a
EXTR_PREFIX_ALL
spowodowałaby
że
wszystkie
nowe
zmienne
zostałyby
nazwane
$wddx_kolor
,
$wddx_rozmiar
,
and
$wddx_ksztalt
.
Musisz
użyć
tablic
asocjacyjnych
.
Tablica
indeksowana
liczbowo
nie
da
żadnych
efektów
,
chyba
że
zostanie
użyta
flaga
EXTR_PREFIX_ALL
lub
EXTR_PREFIX_INVALID
.
Patrz
także
:
compact(
)
.