Podręcznik PHP
Poprzedni |  | Następny

# extract

(PHP 3>= 3.0.7, PHP 4 )

extract -- Importuj zmienne do bieżącej tabeli symboli z tablicy

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

Poprzedni | Spis treści | Następny
end | Początek rozdziału | in_array