extract
Opis
int extract ( array tablica_zmiennych [, int typ_ekstrakcji [, string prefiks]] )
Ta funkcja służy do importowania zmiennych z tablicy do bieżącej tablicy
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 tablicy symboli będzie stworzona zmienna, zależna
od parametrów typ_ekstrakcji
i
prefiks
.
Notatka: Od wersji 4.0.5 ta funkcja zwraca liczbÄ™ wyekstrahowanych zmiennych.
Notatka: Stałe EXTR_IF_EXISTS i EXTR_PREFIX_IF_EXISTS zostały dodane w PHP 4.2.0.
Notatka: Stała EXTR_REFS została dodana w PHP 4.3.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 ekstrahuj 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.
- EXTR_REFS
Ekstraktuje zmienne jako referencje. Oznacza to, że wartości zaimportowanych zmiennych ciągle odnoszą się do wartości parametru
tablica_zmiennych
. Flaga ta może być użyta sama lub w połączaniu z innymi flagami poprzez użycie operacji OR na parametrzetyp_ekstrakcji
. Została ona dodana w PHP 4.3.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. Prefiksy sÄ… automatycznie oddzielane od
kluczy tablicy poprzez znak "_".
extract() zwraca liczbę zmiennych szczęśliwie zaimportowanych do tablicy symboli.
Ostrzeżenie |
Nie należy używać funkcji extract() na niepewnych
danych, jak na przykład danych odebranych od użytkownika ($_GET, ...).
Można tak zrobić na przykład w celu tymczasowego uruchomienia starych
skryptów, które zależne są od ustawienia register_globals. Należy jednak użyć
nie nadpisujÄ…cego parametru |
Możliwa jest ekstrakcja zmiennych zawartych w tablicy asocjacyjnej zwróconej przez wddx_deserialize().
$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().