Forum und email
extract

extract

(PHP 3 >= 3.0.7, PHP 4, PHP 5)

extract -- Importovat proměnné z pole do symbolové tabulky

Popis

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

Tato funkce se používá k importu proměnných z pole do aktivní symbolové tabulky. Přijímá pole var_array; z klíčů vytváří názvy proměnných a z hodnot hodnoty těchto proměnných. Vytváří jednu proměnnou z každého klíč/hodnota páru (s ohledem na argumenty extract_type a prefix).

Poznámka: Od PHP 4.0.5 tato funkce vrací počet extrahovaných proměnných.

extract() ověřuje, jestli všechny klíče tvoří platné názvy proměnných, a také jestli nekolidují s proměnnými existujícími v aktivní symbolové tabulce. Způsob, jakým se nakládá s neplatnými/numerickými klíči a kolizemi závisí na extract_type. Ten může mít jednu z následujících hodnot.

EXTR_OVERWRITE

Pokud existuje kolize, přepsat existující proměnnou.

EXTR_SKIP

Pokud existuje kolize, nepřepsat existující proměnnou.

EXTR_PREFIX_SAME

Pokud existuje kolize, předřadit před název nové proměnné prefix.

EXTR_PREFIX_ALL

Opatřit prefixem prefix všechny názvy proměnných. Od PHP 4.0.5 toto zahrnuje i číselné indexy.

EXTR_PREFIX_INVALID

Prefixem prefix opatřit pouze neplatné/číselné názvy proměnných. Tento příznak byl přidán v PHP 4.0.5.

Defaultní extract_type je EXTR_OVERWRITE.

Pozn.: prefix se vyžaduje pouze pokud je extract_type EXTR_PREFIX_SAME, EXTR_PREFIX_ALL nebo EXTR_PREFIX_INVALID. Pokud výsledný název (vč. prefixu) není platný název proměnné, nenaimportuje se do symbolové tabulky.

extract() vrací počet proměnných úspěšně naimportovaných do symbolové tabulky.

Možné využití extract() je import proměnných do symbolové tabulky z asociativního pole vráceného wddx_deserialize().

Příklad 1. Ukázka extract()

<?php

/* Předpokládejme, že $var_array je pole vrácené
   z wddx_deserialize */

$size = "large";
$var_array = array ("color" => "blue",
                    
"size"  => "medium",
                    
"shape" => "sphere");
extract ($var_array, EXTR_PREFIX_SAME, "wddx");

print
"$color, $size, $shape, $wddx_size\n";

?>

Výše uvedená ukázka vytiskne:

blue, large, sphere, medium

$size se nepřepsala, protože bylo specifikováno EXTR_PREFIX_SAME, tudíž se vytvořila proměnná $wddx_size. Pokud by bylo zadáno EXTR_SKIP, nevytvořila by se ani $wddx_size. EXTR_OVERWRITE by způsobilo přepsání hodnoty $size na "medium", a EXTR_PREFIX_ALL by vytvořilo nové proměnné pojmenované $wddx_color, $wddx_size a $wddx_shape.

U PHP verzí nižších než 4.0.5 musíte použít asociativní pole.

Viz také: compact().