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:
Jeśli istnieje kolizja, nadpisz istniejącą zmienną.
Jeśli istnieje kolizja, nie nadpisuj istniejącej zmiennej.
Jeśli istnieje kolizja, na początek nazwy zmiennej wstaw
prefiks.
Na początek każdej nazwy zmiennej wstaw prefiks.
Od PHP 4.0.5 dotyczy to także nazw numerycznych.
Wstaw prefiks na początek złych/numerycznych
nazw. Ta flaga została dodana w PHP 4.0.5.
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.
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.
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
parametrze typ_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().