PHP Manuál | ||
---|---|---|
Predchádzajúci | Nasledujúci |
Táto funkcia sa používa na importovanie premenných z poľa do aktuálnej tabuľky symbolov. Berie si asociatívne pole var_array a spracováva kľúče ako názvy premenných a hodnoty ako hodnoty premenných. Pre každý pár kľúčov/hodnôt vytvorí premennú v aktuálnej tabuľke symbolov, vzhľadom na parametre extract_type a prefix.
Poznámka: Počínajúc verziou 4.0.5, táto funkcia vracia počet vyňatých premenných.
Poznámka: EXTR_IF_EXISTS a EXTR_PREFIX_IF_EXISTS boli predstavené vo verzii 4.2.0.
Poznámka: EXTR_REFS bol predstavený vo verzii 4.3.0.
extract() kontroluje každý kľúč, či má platný názov premennej. Tiež kontroluje kolízie s existujúcimi premennými v tabuľke symbolov. Spôsob, akým sa neplatné/číselné kľúče a kolízie spracovávajú, je určený extract_type. Môže byť jednou z následujúcich hodnôt:
Ak existuje kolízia, prepísať existujúcu premennú.
Ak existuje kolízia, neprepísať existujúci premennú.
Ak existuje kolízia, predradiť názov premennej s prefixom.
Predradiť všetky názvy premenných s prefix. Počínajúc PHP 4.0.5, toto zahŕňa aj číselné premenné.
Predradiť iba neplatné/číselné názvy premenných s prefixom. Tento indikátor bol pridaný v PHP 4.0.5.
Iba prepísať premennú, ak už existuje v aktuálnej tabuľke symbolov, inak neurobiť nič. Toto je užitočné pre difinovanie zoznamu platných premenných a následné vyňatie iba tých premenných, ktoré ste na príklad zadefinovali z $_REQUEST. Tento indikátor bol pridaný v PHP 4.2.0.
Ak v akutálnej tabuľke symbolov existuje nepredradená verzia rovnakej premennej, vytvoriť len predradené názvy premenných. Tento indikátor bol pridaný v PHP 4.2.0.
Vyníma premenné ako odkazy. Efektivita je v tom, že hodnoty importovaných premenných sa stále odkazujú na hodnoty parametra var_array. Tento indikátor môžte použiť ako samostatný alebo kombinovať ho s inýn indikátorom pomocou logického súčtu s extract_type. Tento indikátor bol pridaný v PHP 4.3.0.
Ak extract_type nie je špecifikovaný, usudzuje sa ako EXTR_OVERWRITE.
prefix sa vyžaduje iba ak extract_type je EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID alebo EXTR_PREFIX_IF_EXISTS. Ak predradený výsledok nie je platným názvom premennej, neimportuje sa do tabuľky do symbolov.
extract() vracia počet premenných úspešne importovaných do tabuľky symbolov.
Varovanie |
Nepoužívajte extract na nedôverčivé dáta, ako užívateľský vstup ($_GET, ...). Ak tak urobíte, tak napr. ak chcete spustiť starý kód, ktorý sa dočasne spolieha na register_globals, uistite sa, či používate jednu z neprepisujúcich extract_type hodnôž ako EXTR_SKIP, a pozor na to, že teraz by ste mali extract-ovať $_SERVER, $_SESSION, $_COOKIE, $_POST a $_GET in tom poradí. |
Možným využitím pre extract() je importovanie premenných nachádzajúcich sa v asociatívnom poli, vrátených pomocou wddx_deserialize(), do tabuľky symbolov.
$velkost nebola prepísaná, pretože sme neurčili EXTR_PREFIX_SAME, ktorý indikoval, že bol vytvorený v $wddx_velkost. Ak by sa špecifikoval EXTR_SKIP, potom by sa $wddx_velkost dokonca ani nevytvoril. EXTR_OVERWRITE by spôsobil, že by $velkost mala hodnotu "stredna" a z EXTR_PREFIX_ALL by plynulo, že sa nazýva $wddx_farba, $wddx_velkost a $wddx_tvar.
Musíte použiť asociatívne pole, číselne indexované pole by nevyprodukovalo výsledky, ak by ste nepoužili EXTR_PREFIX_ALL alebo EXTR_PREFIX_INVALID.
Tiež pozri compact().
Predchádzajúci | Domov | Nasledujúci |
end | Hore | in_array |