1
0
mirror of https://github.com/php/doc-pl.git synced 2026-03-29 10:32:12 +02:00
Files
archived-doc-pl/reference/array/functions/extract.xml
Richard Quadling 35ddb289de Reencode XML to UTF-8
git-svn-id: https://svn.php.net/repository/phpdoc/pl/trunk@314597 c90b9560-bf6c-de11-be94-00142212c4b1
2011-08-09 09:34:32 +00:00

238 lines
8.3 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: n/a Maintainer: leszek Status: ready -->
<!-- $Revision$ -->
<refentry xml:id="function.extract" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>extract</refname>
<refpurpose>Importuj zmienne do bieżącej tablicy symboli z tablicy</refpurpose>
</refnamediv>
<refsect1>
<title>Opis</title>
<methodsynopsis>
<type>int</type><methodname>extract</methodname>
<methodparam><type>array</type><parameter>tablica_zmiennych</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>typ_ekstrakcji</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>prefiks</parameter></methodparam>
</methodsynopsis>
<para>
Ta funkcja służy do importowania zmiennych z tablicy do bieżącej tablicy
symboli. Pobiera jako parametr tablicę asocjacyjną
<parameter>tablica_zmiennych</parameter> 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 <parameter>typ_ekstrakcji</parameter> i
<parameter>prefiks</parameter>.
</para>
<note>
<para>
Od wersji 4.0.5 ta funkcja zwraca liczbę wyekstrahowanych zmiennych.
</para>
</note>
<note>
<para>
Stałe <constant>EXTR_IF_EXISTS</constant> i
<constant>EXTR_PREFIX_IF_EXISTS</constant> zostały dodane w PHP 4.2.0.
</para>
</note>
<note>
<para>
Stała <constant>EXTR_REFS</constant> została dodana w PHP 4.3.0.
</para>
</note>
<para>
<function>extract</function> 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
<parameter>typ_ekstrakcji</parameter>. Może być jedną z poniższych
wartości:
<variablelist>
<varlistentry>
<term><constant>EXTR_OVERWRITE</constant></term>
<listitem>
<simpara>
Jeśli istnieje kolizja, nadpisz istniejącą zmienną.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_SKIP</constant></term>
<listitem>
<simpara>
Jeśli istnieje kolizja, nie nadpisuj istniejącej zmiennej.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_SAME</constant></term>
<listitem>
<simpara>
Jeśli istnieje kolizja, na początek nazwy zmiennej wstaw
<parameter>prefiks</parameter>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_ALL</constant></term>
<listitem>
<simpara>
Na początek każdej nazwy zmiennej wstaw <parameter>prefiks</parameter>.
Od PHP 4.0.5 dotyczy to także nazw numerycznych.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_INVALID</constant></term>
<listitem>
<simpara>
Wstaw <parameter>prefiks</parameter> na początek złych/numerycznych
nazw. Ta flaga została dodana w PHP 4.0.5.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_IF_EXISTS</constant></term>
<listitem>
<simpara>
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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_PREFIX_IF_EXISTS</constant></term>
<listitem>
<simpara>
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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>EXTR_REFS</constant></term>
<listitem>
<simpara>
Ekstraktuje zmienne jako referencje. Oznacza to, że wartości
zaimportowanych zmiennych ciągle odnoszą się do wartości parametru
<parameter>tablica_zmiennych</parameter>. Flaga ta może być użyta
sama lub w połączaniu z innymi flagami poprzez użycie operacji OR na
parametrze <parameter>typ_ekstrakcji</parameter>. Została ona dodana
w PHP 4.3.0.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Jeśli <parameter>typ_ekstrakcji</parameter> nie został podany, to
zakładana jest opcja <constant>EXTR_OVERWRITE</constant>.
</para>
<para>
Zauważ, że parametr <parameter>prefiks</parameter> jest wymagany tylko
jeśli <parameter>typ_ekstrakcji</parameter> to
<constant>EXTR_PREFIX_SAME</constant>,
<constant>EXTR_PREFIX_ALL</constant>,
<constant>EXTR_PREFIX_INVALID</constant> lub
<constant>EXTR_PREFIX_IF_EXISTS</constant>. 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 "_".
</para>
<para>
<function>extract</function> zwraca liczbę zmiennych szczęśliwie
zaimportowanych do tablicy symboli.
</para>
<warning>
<para>
Nie należy używać funkcji <function>extract</function> 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 <link
linkend="security.globals">register_globals</link>. Należy jednak użyć
nie nadpisującego parametru <parameter>typ_ekstrakcji</parameter>, jak
na przykład <constant>EXTR_SKIP</constant>. Trzeba też pamiętać aby
ekstrahować zmienne w kolejności określonej przez opcję <link
linkend="ini.variables-order">variables_order</link> pliku <link
linkend="ini">&php.ini;</link>.
</para>
</warning>
<para>
Możliwa jest ekstrakcja zmiennych zawartych w tablicy asocjacyjnej zwróconej
przez <function>wddx_deserialize</function>.
</para>
<para>
<example>
<title>Przykład użycia <function>extract</function></title>
<programlisting role="php">
<![CDATA[
<?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");
echo "$kolor, $rozmiar, $ksztalt, $wddx_rozmiar\n";
?>
]]>
</programlisting>
<screen>
<![CDATA[
niebieski, duży, kulisty, średni
]]>
</screen>
</example>
</para>
<para>
<varname>$rozmiar</varname> nie został nadpisany, ponieważ podany został
parametr <constant>EXTR_PREFIX_SAME</constant>, przez co stworzona został
zmienna <varname>$wddx_rozmiar</varname>. Jeśli podana by była flaga
<constant>EXTR_SKIP</constant>, to zmienna
<varname>$wddx_rozmiar</varname> nie zostałaby stworzona. Flaga
<constant>EXTR_OVERWRITE</constant> spowodowałaby, że zmienna
<varname>$rozmiar</varname> miałaby wartość "średni", a
<constant>EXTR_PREFIX_ALL</constant> spowodowałaby że wszystkie nowe
zmienne zostałyby nazwane <varname>$wddx_kolor</varname>,
<varname>$wddx_rozmiar</varname>, and <varname>$wddx_ksztalt</varname>.
</para>
<para>
Musisz użyć tablic asocjacyjnych. Tablica indeksowana liczbowo nie da
żadnych efektów, chyba że zostanie użyta flaga
<constant>EXTR_PREFIX_ALL</constant> lub
<constant>EXTR_PREFIX_INVALID</constant>.
</para>
<para>
Patrz także: <function>compact</function>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->