extract

(PHP 3>= 3.0.7, PHP 4 )

extract --  tömbből változókat helyez el az aktuális szimbólumtáblába

Leírás

int extract ( array var_array [, int extract_type [, string prefix]])

Ez a függvény arra szolgál, hogy egy tömb tartalma alapján változókat helyezzen el az aktuális szimbólumtáblában. A paraméterként kapott var_array tömb kulcsait tekinti a változók neveinek és a tömbelemek értékeit a változók tartalmának. Minden kulcs-érték párból készül egy változó a szimbólumtáblában, az extract_type és prefix paraméterektől függően.

Megjegyzés: PHP 4.0.5-től kezdve a beillesztett változók számával tér vissza a függvény.

Megjegyzés: EXTR_IF_EXISTS és EXTR_PREFIX_IF_EXISTS 4.2.0 verzótól használhatók.

Az extract() megvizsgál minden kulcsot (indexet), hogy az lehet-e egy érvényes változónév vagy sem, és hogy ilyen nevű változó létezik-e már a szimbólumtáblában (ütközés). Az érvénytelen változónevek és ütközések az extract_type paraméterben megadottak szerint lesz kezelve. Lehetséges értékei:

EXTR_OVERWRITE

Ütközéskor felülírja a már létező változót.

EXTR_SKIP

Ütközéskor nem írja felül a létező változót.

EXTR_PREFIX_SAME

Ütközéskor a létrehozandó változó neve elé prefix kerül.

EXTR_PREFIX_ALL

Minden létrehozandó változó neve elé prefix kerül. PHP 4.0.5-től kezdve ez érvényes a numerikus indexű elemekre is.

EXTR_PREFIX_INVALID

Minden érvénytelen nevű változónév elé a prefix kerül. PHP 4.0.5-től kezdve használható ez beállítás.

EXTR_IF_EXISTS

Csak akkor írja felül az adott nevű változót, ha az már létezik az aktuális szimbólimtáblában, egyébként nem csinál semmit. Ez hasznos lehet, ha : érvényes változókat előre definiálni, majd létrehozni a $_REQUEST tömbön kívül definiált változókat. PHP 4.2.0-től használható.

EXTR_PREFIX_IF_EXISTS

Csak akkor hozza létre a toldalékolt nevű változót, ha annak a toldalék nélküli megfelelője már létezik már létezik az aktuális szimbólimtáblában. PHP 4.2.0-től használható.

Ha nincs megadva az extract_type, akkor EXTR_OVERWRITE az alapértelmezés.

A prefix csak akkor szükséges, ha az extract_type EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID vagy EXTR_PREFIX_IF_EXISTS értékű. Ha prefixszel ellátott változónév sem érvényes, akkor az nem kerül bele a szimbólumtáblába.

Az extract() a sikeresen beillesztett változók számával tér vissza.

Az extract függvény egy lehetséges használata azoknak a változóknak a szimbólumtáblába importálása, amelyeket a wddx_deserialize() adott vissza egy asszociatív tömbben.

Példa 1. extract() példa

<?php

/* Feltételezi, hogy a $var_array egy a
   wddx_deserialize által visszaadott tömb*/

$méret    = "nagy";
$var_tomb = array ("szín"  => "kék",
                    "méret" => "közepes",
                    "alak"  => "gömb");
extract ($var_tomb, EXTR_PREFIX_SAME, "wddx");

print "$szín, $méret, $alak, $wddx_méret\n";
?>

A fenti példa ezt eredményezi:
kék, nagy, gömb, közepes

A $méret változó nem lett felülírva az EXTR_PREFIX_SAME megadása miatt, amely azt eredményezte, hogy ehelyett a $wddx_méret változóba került az új érték. Ha EXTR_SKIP-et használtunk volna, akkor a $wddx_méret sem került volna létrehozásra. Az EXTR_OVERWRITE pedig azt okozta volna, hogy a $méret értéke "közepes"-re változott volna. Az EXTR_PREFIX_ALL-lal pedig minden változó neve wddx előtaggal kezdődne: $wddx_szín, $wddx_méret és $wddx_alak.

Asszociatív tömböket kell használni, mert a numerikusan indexeltek nem adnak eredményt, kivéve EXTR_PREFIX_ALL vagy EXTR_PREFIX_INVALID jelzők használatakor.

Lásd még: compact()!