cynic Mon Feb 5 04:40:02 2001 EDT
Added files:
/phpdoc/cs/functions array.xml
Log:
should be completely translated
Index: phpdoc/cs/functions/array.xml
+++ phpdoc/cs/functions/array.xml
<reference id="ref.array">
<title>Funkce pro pr�ci s poli</title>
<titleabbrev>Pole</titleabbrev>
<partintro>
<simpara>
Tyto funkce v�m umo��uj� manipulovat a interagovat r�zn�mi zp�soby s poli.
Pole jsou nezbytn� pro ukl�d�n� a pr�ci se sadami prom�nn�ch.
</simpara>
<simpara>
Podporov�na jsou jednoduch� a v�cerozm�rn� pole; vytv��et se daj� u�ivatelsky
i jako v�stup funkce. Existuj� datab�zov� funkce na pln�n� pol� v�sledky
datab�zov�ch dotaz�, a n�kolik dal��ch funkc� vrac� pole.
</simpara>
<para>
Viz tak�: <function>is_array</function>,
<function>explode</function>,
<function>implode</function>,
<function>split</function> a
<function>join</function>.
</para>
</partintro>
<refentry id="function.array">
<refnamediv>
<refname>array</refname>
<refpurpose>
Vytvo�it pole
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array</function></funcdef>
<paramdef>mixed
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� pole argument�. Argument�m m��e b�t p�i�azen index pomoc� oper�toru
<literal>=></literal>.
</para>
<para>
<note>
<para>
<function>array</function> je jazykov� konstrukt pou��van� k reprezentaci
pol�, nikoliv b�n� funkce.
</para>
</note>
</para>
<para>
Syntaxe "index => hodnota", s ��rko jako odd�lova�em, definuje indexy a
hodnoty. Index m��e b�t �et�zec nebo ��slo. Pokud se index vynech�,
automaticky se generuje ��seln� index za��naj�c� na 0. Pokud je index
integer, dal�� generovan� index bude nejvy��� celo��seln� index + 1. Pozn.:
pokud jsou definov�ny dva identick� indexy, prvn� se p�ep��e posledn�m.
</para>
<para>
N�sleduj�c� uk�zka demonstruje jak vytvo�it dvourozm�rn� pole, jak ur�it
kl��e v asociativn�ch pol�ch, a jak p�eskakovat ��seln� indexy v norm�ln�ch
pol�ch.
<example>
<title>Uk�zka <function>array</function></title>
<programlisting role="php">
$fruits = array (
"fruits" => array ("a"=>"orange", "b"=>"banana", "c"=>"apple"),
"numbers" => array (1, 2, 3, 4, 5, 6),
"holes" => array ("first", 5 => "second", "third")
);
</programlisting>
</example>
</para>
<para>
<example>
<title>Automatick� index a <function>array</function></title>
<programlisting role="php">
$array = array( 1, 1, 1, 1, 1, 8=>1, 4=>1, 19, 3=>13);
print_r($array);
</programlisting>
</example>
v�stup bude n�sleduj�c�:
<informalexample>
<programlisting>
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 13
[4] => 1
[8] => 1
[9] => 19
)
</programlisting>
</informalexample>
Index 3 je definov�n dvakr�t, a podr�� si posledn� hodnotu 13. Index 4 je
definov�n po indexu 8 a dal�� generovan� index (hodnota 19) je 9, proto�e
nejvy��� index byl 8.
</para>
<para>
Tato uk�zka vytvo�� pole ��slovan� od 1.
<example>
<title>Index za��naj�c� 1 s <function>array</function></title>
<programlisting role="php">
$firstquarter = array(1 => 'January', 'February', 'March');
print_r($firstquarter);
</programlisting>
</example>
toto bude v�stup:
<informalexample>
<programlisting>
Array
(
[1] => 'January'
[2] => 'February'
[3] => 'March'
)
</programlisting>
</informalexample>
</para>
<para>
Viz tak�: <function>list</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-count-values">
<refnamediv>
<refname>array_count_values</refname>
<refpurpose>Spo��tat v�echny hodnoty v poli</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_count_values</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_count_values</function> vrac� pole pou��vaj�c� hodnoty z
<parameter>input</parameter> jako kl��e a jejich �etnosti v
<parameter>input</parameter> jako hodnoty.
</para>
<para>
<example>
<title>Uk�zka <function>array_count_values</function></title>
<programlisting role="php">
$array = array (1, "hello", 1, "world", "hello");
array_count_values ($array); // vrac� array(1=>2, "hello"=>2, "world"=>1)
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.array-diff">
<refnamediv>
<refname>array_diff</refname>
<refpurpose>Spo��tat rozd�l pol�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_diff</function></funcdef>
<paramdef>array <parameter>array1</parameter></paramdef>
<paramdef>array <parameter>array2</parameter></paramdef>
<paramdef>array
<parameter><optional> ...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_diff</function> vrac� pole obsahuj�c� v�echny hodnoty z
<parameter>array1</parameter>, kter� se nevyskytuj� v ��dn�m z dal��ch
argument�. Kl��e jsou zachov�ny.
</para>
<para>
<example>
<title>Uk�zka <function>array_diff</function></title>
<programlisting role="php">
$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_diff ($array1, $array2);
</programlisting>
</example>
</para>
<para>
<varname>$result</varname> obsahuje <literal>array ("blue");</literal>
</para>
<para>
Viz tak�: <function>array_intersect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-flip">
<refnamediv>
<refname>array_flip</refname>
<refpurpose>Prohodit kl��e a hodnoty pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_flip</function></funcdef>
<paramdef>array <parameter>trans</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_flip</function> pole s prohozen�mi kl��i a hodnotami.
</para>
<para>
<example>
<title>Uk�zka <function>array_flip</function></title>
<programlisting role="php">
$trans = array_flip ($trans);
$original = strtr ($str, $trans);
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.array-intersect">
<refnamediv>
<refname>array_intersect</refname>
<refpurpose>Spo��tat pr�nik pol�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_intersect</function></funcdef>
<paramdef>array <parameter>array1</parameter></paramdef>
<paramdef>array <parameter>array2</parameter></paramdef>
<paramdef>array
<parameter><optional> ...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_intersect</function> vrac� pole obsahuj�c� v�echny hodnoty
z <parameter>array1</parameter>, kter� se vyskytuj� ve v�ech argumentech.
Kl��e jsou zachov�ny.
</para>
<para>
<example>
<title>Uk�zka <function>array_intersect</function></title>
<programlisting role="php">
$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_intersect ($array1, $array2);
</programlisting>
</example>
</para>
<para>
<varname>$result</varname> obsahuje <literal>array ("a" => "green",
"red");</literal>
</para>
<para>
Viz tak�: <function>array_diff</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-keys">
<refnamediv>
<refname>array_keys</refname>
<refpurpose>Vr�tit v�echny kl��e pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_keys</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
<paramdef>mixed
<parameter>
<optional>search_value</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_keys</function> vrac� kl��e, numerick� i textov�, z pole
<parameter>input</parameter>.
</para>
<para>
Pokud je p��tomen voliteln� argument <parameter>search_value</parameter>,
vrac� pouze kl��e t�to hodnoty. Jinak vrac� v�echny kl��e z pole
<parameter>input</parameter>.
</para>
<para>
<example>
<title>Uk�zka <function>array_keys</function></title>
<programlisting role="php">
$array = array (0 => 100, "color" => "red");
array_keys ($array); // vrac� array (0, "color")
$array = array ("blue", "red", "green", "blue", "blue");
array_keys ($array, "blue"); // vrac� array (0, 3, 4)
$array = array ("color" => array("blue", "red", "green"), "size" =>
array("small", "medium", "large"));
array_keys ($array); // vrac� array ("color", "size")
</programlisting>
</example>
</para>
<note>
<para>
Tato funkce byla p�id�na v PHP 4, d�le je uvedena implementace pro ty, kte��
st�le pou��vaj� PHP 3.
<example>
<title>
Implementace <function>array_keys</function> pro u�ivatele PHP 3
</title>
<programlisting role="php">
function array_keys ($arr, $term="") {
$t = array();
while (list($k,$v) = each($arr)) {
if ($term && $v != $term)
continue;
$t[] = $k;
}
return $t;
}
</programlisting>
</example>
</para>
</note>
<para>
Viz tak�: <function>array_values</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-merge">
<refnamediv>
<refname>array_merge</refname>
<refpurpose>Slou�it dv� nebo v�ce pol�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_merge</function></funcdef>
<paramdef>array <parameter>array1</parameter></paramdef>
<paramdef>array <parameter>array2</parameter></paramdef>
<paramdef>array
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_merge</function> slou�� prvky dvou nebo v�ce pol� dohromady
tak, �e hodnoty ka�d�ho pole se p�ipoj� na konec p�edchoz�ho. Vrac� v�sledn�
pole.
</para>
<para>
Pokud maj� vstupn� pole stejn� textov� kl��, pozd�j�� hodnota p�ep��e
d��v�j�� hodnotu. Pokud ale maj� stejn� ��seln� kl��, pozd�j�� hodnota tu
p�vodn� nep�ep��e, ale p�ipoj� se k n�.
</para>
<para>
<example>
<title>Uk�zka <function>array_merge</function></title>
<programlisting role="php">
$array1 = array ("color" => "red", 2, 4);
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
array_merge ($array1, $array2);
</programlisting>
</example>
</para>
<para>
V�sledn� pole bude <literal>array("color" => "green", 2, 4,
"a", "b", "shape" => "trapezoid", 4)</literal>.
</para>
<para>
Viz tak�: <function>array_merge_recursive</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-merge-recursive">
<refnamediv>
<refname>array_merge_recursive</refname>
<refpurpose>Rekurzivn� slou�it dv� nebo v�ce pol�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_merge_recursive</function></funcdef>
<paramdef>array <parameter>array1</parameter></paramdef>
<paramdef>array <parameter>array2</parameter></paramdef>
<paramdef>array
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_merge_recursive</function> slou�� prvky dvou nebo v�ce
pol� tak, �e hodnoty pole se p�ipoj� na konec p�edchoz�ho pole. Vrac�
v�sledn� pole.
</para>
<para>
Pokud obsahuj� vstupn� pole stejn� textov� kl��, hodnoty t�chto kl��� se
rekurzivn� slou�� do pole tak, �e pokud je jedna z hodnot sama pole, tato
funkce ji tak� slou�� s odpov�daj�c� polo�kou z dal��ho pole. Pokud ale
tato pole maj� stejn� ��seln� kl��, pozd�j�� hodnota nep�ep��e tu d��v�j��,
ale p�ipoj� se.
</para>
<para>
<example>
<title>Uk�zka <function>array_merge_recursive</function></title>
<programlisting role="php">
$ar1 = array ("color" => array ("favorite" => "red"), 5);
$ar2 = array (10, "color" => array ("favorite" => "green", "blue"));
$result = array_merge_recursive ($ar1, $ar2);
</programlisting>
</example>
</para>
<para>
V�sledn� pole bude <literal>array ("color" => array
("favorite" => array ("red", "green"), "blue"), 5, 10)</literal>.
</para>
<para>
Viz tak�: <function>array_merge</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-multisort">
<refnamediv>
<refname>array_multisort</refname>
<refpurpose>T��dit v�ce pol�, nebo v�cerozm�rn� pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>array_multisort</function></funcdef>
<paramdef>array <parameter>ar1</parameter></paramdef>
<paramdef>mixed
<parameter><optional>arg</optional></parameter>
</paramdef>
<paramdef>mixed
<parameter><optional>...</optional></parameter>
</paramdef>
<paramdef>array
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_multisort</function> se d� vyu��t k t��d�n� n�kolika
pol� najednou nebo k t��d�n� v�cerozm�rn�ho pole XXX according by one of
more dimensions. P�i t��d�n� udr�uje asociace kl���.
</para>
<para>
Vstupn� pole jsou manipulov�na jako sloupce tabulky, kter� se m� t��dit
podle ��dk� - p�ipom�n� to funkcionalitu SQL klauzule ORDER BY. Prvn� pole
je to, podle kter�ho se bude t��dit. ��dky (hodnoty) v tomto poli that
compare the same are sorted by the next input array, and so on.
</para>
<para>
Struktura argument� t�to funkce je trochu neobvykl�, ale pru�n�. Prvn�
argument mus� b�t pole. Ka�d� dal�� argument m��e b�t bu� pole nebo jeden
z p��znak z n�sleduj�c�ch seznam�:
</para>
<para>
P��znaky sm�ru t��d�n�:
<itemizedlist>
<listitem>
<simpara>SORT_ASC - t��dit vzestupn�</simpara>
</listitem>
<listitem>
<simpara>SORT_DESC - t��dit sestupn�</simpara>
</listitem>
</itemizedlist>
</para>
<para>
P��znaky typu t��d�n�:
<itemizedlist>
<listitem>
<simpara>SORT_REGULAR - porovn�vat polo�ky norm�ln�</simpara>
</listitem>
<listitem>
<simpara>SORT_NUMERIC - porovn�vat polo�ky ��seln�</simpara>
</listitem>
<listitem>
<simpara>SORT_STRING - porovn�vat polo�ky jako �et�zce</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Po ka�d�m poli m��ete specifikovat jeden p��znak ka�d�ho typu. P��znaky
t��d�n� specifikovan� po ka�d�m poli plat� pouze pro toto pole - pro dal��
pole se resetuj� na defaultn� SORT_ASC a SORT_REGULAR.
</para>
<para>
P�i �sp�chu vrac� <literal>true</literal>, p�i selh�n�
<literal>false</literal>.
</para>
<para>
<example>
<title>T��d�n� v�ce pol�</title>
<programlisting role="php">
$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);
</programlisting>
</example>
</para>
<para>
V t�to uk�zce bude po set��d�n� prvn� pole obsahovat 10, "a", 100, 100.
Druh� pole bude obsahovat 1, 1, 2, "3". Polo�ky druh�ho pole odpov�daj�c�
identick�m polo�k�m v prvn�m poli (100 a 100) byly tak� set��d�ny.
</para>
<para>
<example>
<title>T��d�n� v�cerozm�rn�ho pole</title>
<programlisting role="php">
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
</programlisting>
</example>
</para>
<para>
V t�to uk�zce bude po set��d�n� prvn� pole obsahovat 10, 100, 100, "a"
(bylo t��d�no vzestupn� jako �et�zce) a druh� pole bude obsahovat 1, 3,
"2", 1 (t��d�no jako ��sla, sestupn�).
</para>
</refsect1>
</refentry>
<refentry id="function.array-pad">
<refnamediv>
<refname>array_pad</refname>
<refpurpose>Doplnit pole hodnotou na ur�enou d�lku</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_pad</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
<paramdef>int <parameter>pad_size</parameter></paramdef>
<paramdef>mixed <parameter>pad_value</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_pad</function> vrac� kopii pole
<parameter>input</parameter> dopln�nou na velikost
<parameter>pad_size</parameter> hodnotou
<parameter>pad_value</parameter>. Pokud je
<parameter>pad_size</parameter> kladn�, pole je dopln�no zprava, pokud je
negativn�, zleva. Pokud je absolutn� hodnota <parameter>pad_size</parameter>
men�� nebo rovna velikosti <parameter>input</parameter>, k dopln�n� nedojde.
</para>
<para>
<example>
<title>Uk�zka <function>array_pad</function></title>
<programlisting role="php">
$input = array (12, 10, 9);
$result = array_pad ($input, 5, 0);
// v�sledek je array (12, 10, 9, 0, 0)
$result = array_pad ($input, -7, -1);
// v�sledek je array (-1, -1, -1, -1, 12, 10, 9)
$result = array_pad ($input, 2, "noop");
// nedopln�no
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.array-pop">
<refnamediv>
<refname>array_pop</refname>
<refpurpose>Odstranit prvek z konce pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>array_pop</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_pop</function> odstran� a vr�t� posledn� hodnotu pole
<parameter>array</parameter>, ��m� ho zkr�t� o jeden prvek.
</para>
<para>
<example>
<title>Uk�zka <function>Array_pop</function></title>
<programlisting role="php">
$stack = array ("orange", "apple", "raspberry");
$fruit = array_pop ($stack);
</programlisting>
</example>
</para>
<para>
<varname>$stack</varname> m� te� pouze dva prvky:
"orange" a "apple", a <varname>$fruit</varname> obsahuje "raspberry".
</para>
<para>
Viz tak�: <function>array_push</function>,
<function>array_shift</function> a
<function>array_unshift</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-push">
<refnamediv>
<refname>array_push</refname>
<refpurpose>P�idat jeden nebo v�ce prvk� na konec pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>array_push</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
<paramdef>mixed
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_push</function> p�ipojuje p�edan� prom�nn� na konec
<parameter>array</parameter>. D�lka <parameter>array</parameter> se zv�t�uje
o po�et p�idan�ch prom�nn�ch. ��inek je stejn� jako:
<programlisting role="php">
$array[] = $var;
</programlisting>
opakovan� pro ka�dou <parameter>var</parameter>.
</para>
<para>
Vrac� nov� po�et prvk� v poli.
</para>
<para>
<example>
<title>Uk�zka <function>array_push</function></title>
<programlisting role="php">
$stack = array (1, 2);
array_push ($stack, "+", 3);
</programlisting>
</example>
</para>
<para>
V�sledkem t�to uk�zky by byl <varname>$stack</varname> obsahuj�c� 4
prvky: 1, 2, "+" a 3.
</para>
<para>
Viz tak�: <function>array_pop</function>,
<function>array_shift</function> a
<function>array_unshift</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-rand">
<refnamediv>
<refname>array_rand</refname>
<refpurpose>Vybrat n�hodn� jeden nebo v�ce prvk� pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>array_rand</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
<paramdef>int
<parameter><optional>num_req</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_rand</function> je pom�rn� u�ite�n�, kdy� chcete z pole
vybrat n�hodn� jednu nebo v�ce hodnot. P�ij�m� pole
<parameter>input</parameter> a voliteln� argument
<parameter>num_req</parameter>, kter� ur�uje, kolik polo�ek chcete. Jeho
defaultn� hodnota je 1.
</para>
<para>
Pokud vyb�r�te pouze jednu polo�ku, <function>array_rand</function>
vrac� kl�� n�hodn� polo�ky. Jinak vrac� pole kl��� n�hodn� vybran�ch polo�ek.
Takto m��ete vyb�rat n�hodn� hodnoty i kl��e.
</para>
<para>
Nezapome�te inicializovat gener�tor n�hodn�ch ��sel pomoc�
<function>srand</function>.
</para>
<para>
<example>
<title>Uk�zka <function>array_rand</function></title>
<programlisting role="php">
srand ((double) microtime() * 10000000);
$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand ($input, 2);
print $input[$rand_keys[0]]."\n";
print $input[$rand_keys[1]]."\n";
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.array-reverse">
<refnamediv>
<refname>array_reverse</refname>
<refpurpose>Vr�tit pole s prvky v opa�n�m po�ad�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_reverse</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>bool
<parameter><optional>preserve_keys</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_reverse</function> takes input
<parameter>array</parameter> and returns a new array with the
order of the elements reversed, preserving the keys if
<parameter>preserve_keys</parameter> is true.
</para>
<para>
<example>
<title><function>Array_reverse</function> example</title>
<programlisting role="php">
$input = array ("php", 4.0, array ("green", "red"));
$result = array_reverse ($input);
$result_keyed = array_reverse ($input, true);
</programlisting>
</example>
</para>
<para>
<varname>$result</varname> te� obsahuje <literal>array (array ("green",
"red"), 4.0, "php")</literal>. Ale <varname>$result2[0]</varname> je st�le
<literal>"php"</literal>.
</para>
<note>
<para>
Druh� argument byl p�id�n v PHP 4.0.3.
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.array-shift">
<refnamediv>
<refname>array_shift</refname>
<refpurpose>Odstranit prvek ze za��tku pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>array_shift</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_shift</function> vrac� prvn� polo�ku
<parameter>array</parameter> a odstran� ji, ��m� zkr�t�
<parameter>array</parameter> o jeden prvek a ostatn� posune dol�.
</para>
<para>
<example>
<title>Uk�zka <function>array_shift</function></title>
<programlisting role="php">
$args = array ("-v", "-f");
$opt = array_shift ($args);
</programlisting>
</example>
</para>
<para>
<varname>$args</varname> te� m� jeden prvek: "-f" a <varname>$opt</varname>
je "-v".
</para>
<para>
Viz tak�: <function>array_unshift</function>,
<function>array_push</function> a
<function>array_pop</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-slice">
<refnamediv>
<refname>array_slice</refname>
<refpurpose>Vyt�hnout ��st pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_slice</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int <parameter>offset</parameter></paramdef>
<paramdef>int
<parameter>
<optional>length</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_slice</function> vrac� sekvenci prvk�
<parameter>array</parameter> ur�en�ch argumenty
<parameter>offset</parameter> a <parameter>length</parameter>.
</para>
<para>
Pokud je <parameter>offset</parameter> kladn�, tato sekvence za�ne
<parameter>offset</parameter> polo�ek od za��tku
<parameter>array</parameter>. Pokud je <parameter>offset</parameter>
z�porn�, tato sekvence za�ne tolik polo�ek od konce
<parameter>array</parameter>.
</para>
<para>
Pokud je <parameter>length</parameter> kladn�, tato sekvence bude obsahovat
tolik prvk�. Pokud je <parameter>length</parameter> z�porn�, tato sekvence
skon�� tolik prvk� od konce <parameter>array</parameter>. Pokud
<parameter>length</parameter> vynech�te, tato sekvence bude obsahovat
v�echny prvky <parameter>array</parameter> od <parameter>offset</parameter>
do konce.
</para>
<para>
<example>
<title>Uk�zka <function>array_slice</function></title>
<programlisting role="php">
$input = array ("a", "b", "c", "d", "e");
$output = array_slice ($input, 2); // returns "c", "d", and "e"
$output = array_slice ($input, 2, -1); // returns "c", "d"
$output = array_slice ($input, -2, 1); // returns "d"
$output = array_slice ($input, 0, 3); // returns "a", "b", and "c"
</programlisting>
</example>
</para>
<para>
Viz tak�: <function>array_splice</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-splice">
<refnamediv>
<refname>array_splice</refname>
<refpurpose>Odstranit ��st pole a nahradit ji n���m jin�m</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_splice</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
<paramdef>int <parameter>offset</parameter></paramdef>
<paramdef>int
<parameter><optional>length</optional></parameter>
</paramdef>
<paramdef>array
<parameter>
<optional>replacement</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_splice</function> odstra�uje prvky pole
<parameter>input</parameter> ur�en� argumenty <parameter>offset</parameter>
a <parameter>length</parameter>, a p��padn� je nahrazuje prvky voliteln�ho
argumentu (pole) <parameter>replacement</parameter>.
</para>
<para>
Pokud je <parameter>offset</parameter> kladn�, tato odstran�n� ��st za�ne
<parameter>offset</parameter> polo�ek od za��tku
<parameter>array</parameter>. Pokud je <parameter>offset</parameter>
z�porn�, za�ne tolik polo�ek od konce <parameter>array</parameter>.
</para>
<para>
Pokud vynech�te <parameter>length</parameter>,
<function>array_splice</function> odstran� v�echno od
<parameter>offset</parameter> do konce pole. Pokud je
<parameter>length</parameter> kladn�, odstran� se pr�v� tolik prvk�. Pokud
je <parameter>length</parameter> z�porn�, konec odstran�n� ��sti bude
pr�v� tolik prvk� od konce pole. Tip: k odstran�n� v�ech prvk� od
<parameter>offset</parameter> do konce pole p�i sou�asn� ur�en�m argumentu
<parameter>replacement</parameter> pou�ijte jako
<parameter>length</parameter> <literal>count($input)</literal>.
</para>
<para>
Pokud zad�te <parameter>replacement</parameter> pole, odstran�n� prvky se
nahrad� prvky tohoto pole. Pokud argumenty <parameter>offset</parameter> a
<parameter>length</parameter> definov�ny tak, �e se nic neodstran�, prvky
pole <parameter>replacement</parameter> se vlo�� na m�sto ur�en� argumentem
<parameter>offset</parameter>. Tip: pokud je <parameter>replacement</parameter>
jen jedna hodnota, nen� nutno ji umis�ovat do <literal>array()</literal>,
leda�e chcete, aby tato polo�ka byla opravdu pole.
</para>
<para>
N�sleduj�c� vol�n� jsou ekvivalentn�:
<programlisting>
array_push ($input, $x, $y) array_splice ($input, count ($input), 0,
array ($x, $y))
array_pop ($input) array_splice ($input, -1)
array_shift ($input) array_splice ($input, 0, 1)
array_unshift ($input, $x, $y) array_splice ($input, 0, 0, array ($x, $y))
$a[$x] = $y array_splice ($input, $x, 1, $y)
</programlisting>
</para>
<para>
Vrac� pole odstran�n�ch prvk�.
</para>
<para>
<example>
<title>Uk�zky <function>array_splice</function></title>
<programlisting role="php">
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 2); // $input is now array ("red", "green")
array_splice ($input, 1, -1); // $input is now array ("red", "yellow")
array_splice ($input, 1, count($input), "orange");
// $input is now array ("red", "orange")
array_splice ($input, -1, 1, array("black", "maroon"));
// $input is now array ("red", "green",
// "blue", "black", "maroon")
</programlisting>
</example>
</para>
<para>
Viz tak�: <function>array_slice</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-unique">
<refnamediv>
<refname>array_unique</refname>
<refpurpose>Odstranit z pole duplicitn� hodnoty</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_unique</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_unique</function> p�ij�m� pole <parameter>array</parameter>
a vrac� nov� pole bez duplicitn�ch hodnot. Kl��e jsou zachov�ny.
</para>
<para>
<example>
<title>Uk�zka <function>array_unique</function></title>
<programlisting role="php">
$input = array ("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique ($input);
</programlisting>
</example>
</para>
<para>
<varname>$result</varname> te� obsahuje <literal>array ("a" =>
"green", "red", "blue");</literal>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-unshift">
<refnamediv>
<refname>array_unshift</refname>
<refpurpose>P�ipojit jeden nebo v�ce prvk� na za��tek pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>array_unshift</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
<paramdef>mixed
<parameter>
<optional>...</optional>
</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_unshift</function> p�ipoj� p�edan� prvky na za��tek
<parameter>array</parameter>. V�echny prvky jsou p�id�ny jako celek, �ili
p�idan� prvky si zachov�vaj� po�ad�.
</para>
<para>
vrac� nov� po�et prvk� v <parameter>array</parameter>.
</para>
<para>
<example>
<title>Uk�zka <function>array_unshift</function></title>
<programlisting role="php">
$queue = array ("p1", "p3");
array_unshift ($queue, "p4", "p5", "p6");
</programlisting>
</example>
</para>
<para>
<varname>$queue</varname> bude m�t 5 prvk�: "p4", "p5", "p6", "p1" a "p3".
</para>
<para>
Viz tak�: <function>array_shift</function>,
<function>array_push</function> a
<function>array_pop</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.array-values">
<refnamediv>
<refname>array_values</refname>
<refpurpose>Vr�tit v�echny hodnoty v poli</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>array_values</function></funcdef>
<paramdef>array <parameter>input</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>array_values</function> vrac� v�echny hodnoty pole
<parameter>input</parameter>.
</para>
<para>
<example>
<title>Uk�zka <function>array_values</function></title>
<programlisting role="php">
$array = array ("size" => "XL", "color" => "gold");
array_values ($array); // vr�t� array ("XL", "gold")
</programlisting>
</example>
</para>
<note>
<para>
Tato funkce byla p�id�na v PHP 4, n�sleduje implementace pro ty, kdo st�le
pou��vaj� PHP 3.
<example>
<title>
Implementace <function>array_values</function> pro u�ivatele PHP 3
</title>
<programlisting role="php">
function array_values ($arr) {
$t = array();
while (list($k, $v) = each ($arr)) {
$t[] = $v;
return $t;
}
}
</programlisting>
</example>
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.array-walk">
<refnamediv>
<refname>array_walk</refname>
<refpurpose>Pou��t u�ivatelskou funkci na v�echny prvky pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>array_walk</function></funcdef>
<paramdef>array <parameter>arr</parameter></paramdef>
<paramdef>string <parameter>func</parameter></paramdef>
<paramdef>mixed <parameter>userdata</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<simpara>
Aplikuje funkci <parameter>func</parameter> na v�echny prvky pole
<parameter>arr</parameter>. Funkci <parameter>func</parameter> se jako prvn�
argument p�ed� hodnota a jako druh� kl��. Pokud je p��tomen argument
<parameter>userdata</parameter>, bude u�ivatelsk� funkci p�ed�n jako
t�et� argument.
</simpara>
<simpara>
Pokud <parameter>func</parameter> vy�aduje v�ce ne� dva nebo t�i argumenty
(v z�vislosti na <parameter>userdata</parameter>), pro ka�d� vol�n�
<parameter>func</parameter> z <function>array_walk</function> se vygeneruje
varov�n�. Tato varov�n� se daj� potla�it p�id�n�m znaku '@' p�ed
vol�n� <function>array_walk</function> nebo pomoc�
<function>error_reporting</function>.
</simpara>
<note>
<para>
Pokud <parameter>func</parameter> pot�ebuje pracovat p��mo s dan�m polem,
prvn� argument <parameter>func</parameter> se mus� p�ed�vat odkazem.
V�echny zm�ny t�chto hodnot se pak prom�tnou p��mo
v <parameter>arr</parameter>.
</para>
</note>
<note>
<para>
Druh� a t�et� argument <parameter>func</parameter> byly p�id�ny v PHP 4.0.
</para>
<para>
V PHP 4 je t�eba volat podle pot�eby <function>reset</function>, proto�e
<function>array_walk</function> sama vstupn� pole neresetuje.
</para>
</note>
<para>
<example>
<title>Uk�zka <function>array_walk</function></title>
<programlisting role="php">
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
function test_alter (&$item1, $key, $prefix) {
$item1 = "$prefix: $item1";
}
function test_print ($item2, $key) {
echo "$key. $item2<br>\n";
}
array_walk ($fruits, 'test_print');
reset ($fruits);
array_walk ($fruits, 'test_alter', 'fruit');
reset ($fruits);
array_walk ($fruits, 'test_print');
</programlisting>
</example>
</para>
<simpara>
Viz tak�: <function>each</function> a
<function>list</function>.
</simpara>
</refsect1>
</refentry>
<refentry id="function.arsort">
<refnamediv>
<refname>arsort</refname>
<refpurpose>T��dit pole sestupn� se zachov�n�m kl���
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>arsort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int
<parameter><optional>sort_flags</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>arsort</function> t��d� pole tak, �e indexy pole si zachov�vaj�
korelace s prvky, se kter�mi jsou asociov�ny. Toto je u�ite�n� hlavn� p�i
t��d�n� asociativn�ch pol�, kde je po�ad� prvk� signifikantn�.
<example>
<title>Uk�zka <function>Arsort</function></title>
<programlisting role="php">
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
arsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key = $val\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
fruits[a] = orange
fruits[d] = lemon
fruits[b] = banana
fruits[c] = apple
</programlisting>
</informalexample>
</para>
<para>
Ovoce bylo sestupn� set��d�no podle abecedy, a indexy asociovan� s
jednotliv�mi prvky byly zachov�ny.
</para>
<para>
Chov�n� t��d�n� m��ete upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, detaily viz <function>sort</function>.
</para>
<para>
Viz tak�: <function>asort</function>,
<function>rsort</function>,
<function>ksort</function> a
<function>sort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.asort">
<refnamediv>
<refname>asort</refname>
<refpurpose>T��dit pole se zachov�n�m index�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>asort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int <parameter><optional>sort_flags</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>asort</function> t��d� pole tak, �e si indexy zachovaj� corelace
s prvky, se kter�mi jsou spojeny. To je u�ite�n� hlavn� p�i t��d�n�
asociativn�ch pol�, u kter�ch je po�ad� prvk� signifikantn�.
<example>
<title>Uk�zka <function>Asort</function></title>
<programlisting role="php">
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
asort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key = $val\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
fruits[c] = apple
fruits[b] = banana
fruits[d] = lemon
fruits[a] = orange
</programlisting>
</informalexample>
</para>
<para>
Ovoce bylo set��d�no podle abecedy a indexy spojen� s jednotliv�mi
prvky byly zachov�ny.
</para>
<para>
Chov�n� t��d�n� m��ete upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, detaily viz <function>sort</function>.
</para>
<para>
Viz tak�: <function>arsort</function>,
<function>rsort</function>,
<function>ksort</function> a
<function>sort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.compact">
<refnamediv>
<refname>compact</refname>
<refpurpose>Vytvo�it pole obsahuj�c� prom�nn� a jejich hodnoty</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>compact</function></funcdef>
<paramdef>mixed <parameter>varname</parameter></paramdef>
<paramdef>mixed
<parameter><optional>...</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>compact</function> p�ij�m� prom�nn� po�et argument�. Ka�d�
argument m��e b�t bu� �et�zec obsahuj�c� n�zev prom�nn� nebo pole n�zv�
prom�nn�ch. Toto pole m��e tak� obsahovat pole n�zv� prom�nn�ch�;
<function>compact</function> je rekurzivn� zpracuje.
</para>
<para>
Pro ka�d� z �et�zc� <function>compact</function> vyhled� v aktivn� symbolov�
tabulce prom�nnou tohoto jm�na a p�id� ji do v�sledn�ho pole tak, �e n�zev
t�to prom�nn� se stane kl��em a obsah t�to prom�nn� hodnotou tohoto kl��e.
Stru�n� �e�eno, d�l� prav� opak toho, co <function>extract</function>.
Vrac� pole obsahuj�c� v�echny tyto prom�nn�.
</para>
<para>
�et�zce, kter� neobsahuj� n�zvy platn�ch prom�nn�ch se p�esko��.
</para>
<para>
<example>
<title>Uk�zka <function>compact</function></title>
<programlisting role="php">
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array ("city", "state");
$result = compact ("event", "nothing_here", $location_vars);
</programlisting>
<para>
<varname>$result</varname> bude <literal>array ("event"
=> "SIGGRAPH", "city" => "San Francisco", "state" => "CA")</literal>.
</para>
</example>
</para>
<para>
Viz tak�: <function>extract</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.count">
<refnamediv>
<refname>count</refname>
<refpurpose>Spo��tat prvky v prom�nn�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>count</function></funcdef>
<paramdef>mixed <parameter>var</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� po�et prvk� v <parameter>var</parameter>, kter� je typicky pole
(jeliko� v�echno ostatn� m� jeden prvek).
</para>
<para>
Vrac� <literal>1</literal>, pokud <parameter>var</parameter> nen� pole.
</para>
<para>
Vrac� <literal>0</literal>, pokud <parameter>var</parameter> nen�
inicializov�na.
<warning>
<para>
<function>count</function> vrac� <literal>0</literal> pro prom�nn�,
kter� nejsou inicializov�ny, ale vrac� tak� <literal>0</literal> pro
prom�nn�, kter� obsahuj� pr�zdn� pole. Pokud pot�ebujete zjistit, jestli
doty�n� prom�nn� existuje, pou�ijte <function>isset</function>.
</para>
</warning>
</para>
<para>
<example>
<title>Uk�zka <function>count</function></title>
<programlisting role="php">
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count ($a);
//$result == 3
</programlisting>
</example>
</para>
<para>
Viz tak�: <function>sizeof</function>,
<function>isset</function> a
<function>is_array</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.current">
<refnamediv>
<refname>current</refname>
<refpurpose>Vr�tit sou�asn� prvek pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>current</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Ka�d� pole m� vnit�n� ukazatel na jeho "sou�asny" prvek, kter� se
inicializuje na prvn� prvek vlo�en� do tohoto pole.
</para>
<para>
<function>current</function> vrac� prvek, na kter� tento intern� ukazatel
pr�v� ukazuje. Nijak tento ukazatel nem�n�. Pokud teto vnit�n� ukazatel
ukazuje za konec seznamu prvk�, <function>current</function> returns
<literal>false</literal>.
<warning>
<para>
Pokud toto pole obsahuje pr�zdn� prvky (0 nebo "", pr�zdn� �et�zec), tato
funkce pro tyto prvky tak� vr�t� <literal>false</literal>. Je proto
nemo�n� ur�it pomoc� <function>current</function>, jestli jste opravdu na
konci pole.
To properly traverse an array that may contain empty elements, use the
<function>each</function> function.
</para>
</warning>
</para>
<para>
Viz tak�: <function>end</function>,
<function>next</function>,
<function>prev</function> a
<function>reset</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.each">
<refnamediv>
<refname>each</refname>
<refpurpose>
Vrac� dal�� kl��/hodnota p�r z pole
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>each</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� sou�asn� kl��/hodnota p�r z pole <parameter>array</parameter> a posune
intern� ukazatel pole. Tento p�r se vrac� jako pole �ty� prvk� s kl��i
<emphasis>0</emphasis>, <emphasis>1</emphasis>,
<emphasis>key</emphasis> a
<emphasis>value</emphasis>. Prvky <emphasis>0</emphasis> a
<emphasis>key</emphasis> obsahuj� n�zev kl��e tohoto prvku pole a
<emphasis>1</emphasis> a <emphasis>value</emphasis> obsahuj� hodnotu.
</para>
<para>
Pokud intern� ukazatel pole ukazuje za konec tohoto pole,
<function>each</function> vrac� <literal>false</literal>.
</para>
<para>
<example>
<title>Uk�zky <function>each</function></title>
<programlisting role="php">
$foo = array ("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each ($foo);
</programlisting>
<para>
<varname>$bar</varname> te� obsahuje n�sleduj�c� kl��/hodnota p�ry:
<itemizedlist spacing="compact">
<listitem><simpara>0 => 0</simpara></listitem>
<listitem><simpara>1 => 'bob'</simpara></listitem>
<listitem><simpara>key => 0</simpara></listitem>
<listitem><simpara>value => 'bob'</simpara></listitem>
</itemizedlist>
<programlisting role="php">
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each ($foo);
</programlisting>
</para>
<para>
<varname>$bar</varname> te� obsahuje n�sleduj�c� kl��/hodnota p�ry:
<itemizedlist spacing="compact">
<listitem><simpara>0 => 'Robert'</simpara></listitem>
<listitem><simpara>1 => 'Bob'</simpara></listitem>
<listitem><simpara>key => 'Robert'</simpara></listitem>
<listitem><simpara>value => 'Bob'</simpara></listitem>
</itemizedlist>
</para>
</example>
</para>
<para>
<function>each</function> se v�t�inou pou��va s
<function>list</function> k pr�chodu polem, nap�.
<varname>$HTTP_POST_VARS</varname>:
<example>
<title>
Pr�chod <varname>$HTTP_POST_VARS</varname> pomoc�
<function>each</function>
</title>
<programlisting role="php">
echo "Hodnoty odeslan� metodou POST:<br>";
reset ($HTTP_POST_VARS);
while (list ($key, $val) = each ($HTTP_POST_VARS)) {
echo "$key => $val<br>";
}
</programlisting>
</example>
</para>
<para>
Pot�, co prob�hne <function>each</function>, se intern� ukazatel pole posune
na dal�� prvek pole nebo z�stane na posledn�m prvku pole, pokud dojde na
konec.
</para>
<para>
Viz tak�: <function>key</function>,
<function>list</function>,
<function>current</function>,
<function>reset</function>,
<function>next</function> a
<function>prev</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.end">
<refnamediv>
<refname>end</refname>
<refpurpose>
Nastavit vnit�n� ukazatel pole na jeho posledn� prvek
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>end</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>end</function> posune vnit�n� ukazatel pole
<parameter>array</parameter> na jeho posledn� prvek a vrac� tento prvek.
</para>
<para>
Viz tak�: <function>current</function>,
<function>each</function>,
<function>end</function>,
<function>next</function> a
<function>reset</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.extract">
<refnamediv>
<refname>extract</refname>
<refpurpose>Importovat prom�nn� z pole do symbolov� tabulky</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>extract</function></funcdef>
<paramdef>array <parameter>var_array</parameter></paramdef>
<paramdef>int
<parameter><optional>extract_type</optional></parameter>
</paramdef>
<paramdef>string
<parameter><optional>prefix</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce se pou��v� k importu prom�nn�ch z pole do aktivn� symbolov�
tabulky. P�ij�m� pole <parameter>var_array</parameter>; 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
<parameter>extract_type</parameter> a <parameter>prefix</parameter>).
</para>
<note>
<para>
Od PHP 4.0.5 tato funkce vrac� po�et extrahovan�ch prom�nn�ch.
</para>
</note>
<para>
<function>extract</function> 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 <parameter>extract_type</parameter>. Ten m��e
m�t jednu z n�sleduj�c�ch hodnot.
<variablelist>
<varlistentry>
<term>EXTR_OVERWRITE</term>
<listitem>
<simpara>
Pokud existuje kolize, p�epsat existuj�c� prom�nnou.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>EXTR_SKIP</term>
<listitem>
<simpara>
Pokud existuje kolize, nep�epsat existuj�c� prom�nnou.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>EXTR_PREFIX_SAME</term>
<listitem>
<simpara>
Pokud existuje kolize, p�ed�adit p�ed n�zev nov� prom�nn�
<parameter>prefix</parameter>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>EXTR_PREFIX_ALL</term>
<listitem>
<simpara>
Opat�it prefixem <parameter>prefix</parameter> v�echny n�zvy prom�nn�ch.
Od PHP 4.0.5 toto zahrnuje i ��seln� indexy.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>EXTR_PREFIX_INVALID</term>
<listitem>
<simpara>
Prefixem <parameter>prefix</parameter> opat�it pouze neplatn�/��seln�
n�zvy prom�nn�ch. Tento p��znak byl p�id�n v PHP 4.0.5.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Defaultn� <parameter>extract_type</parameter> je EXTR_OVERWRITE.
</para>
<para>
Pozn.: <parameter>prefix</parameter> se vy�aduje pouze pokud je
<parameter>extract_type</parameter> 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.
</para>
<para>
<function>extract</function> vrac� po�et prom�nn�ch �sp�n� naimportovan�ch
do symbolov� tabulky.
</para>
<para>
Mo�n� vyu�it� <function>extract</function> je import prom�nn�ch do
symbolov� tabulky z asociativn�ho pole vr�cen�ho
<function>wddx_deserialize</function>.
</para>
<para>
<example>
<title>Uk�zka <function>Extract</function></title>
<programlisting role="php">
<?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";
?>
</programlisting>
</example>
</para>
<para>
V��e uveden� uk�zka vytiskne:
<programlisting>
blue, large, sphere, medium
</programlisting>
</para>
<para>
<varname>$size</varname> se nep�epsala, proto�e bylo specifikov�no
EXTR_PREFIX_SAME, tud�� se vytvo�ila prom�nn� <varname>$wddx_size</varname>.
Pokud by bylo zad�no EXTR_SKIP, nevytvo�ila by se ani
<varname>$wddx_size</varname>.
EXTR_OVERWRITE by zp�sobilo p�eps�n� hodnoty <varname>$size</varname> na
"medium", a EXTR_PREFIX_ALL by vytvo�ilo nov� prom�nn� pojmenovan�
<varname>$wddx_color</varname>,
<varname>$wddx_size</varname> a
<varname>$wddx_shape</varname>.
</para>
<para>
U PHP verz� ni���ch ne� 4.0.5 mus�te pou��t asociativn� pole.
</para>
<para>
Viz tak�: <function>compact</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.in-array">
<refnamediv>
<refname>in_array</refname>
<refpurpose>Vr�tit <literal>true</literal>, pokud v poli existuje dan�
hodnota</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool in_array</funcdef>
<paramdef>mixed <parameter>needle</parameter></paramdef>
<paramdef>array <parameter>haystack</parameter></paramdef>
<paramdef>bool <parameter>strict</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Hled� v <parameter>haystack</parameter> <parameter>needle</parameter>
a pokud ji najde, vrac� <literal>true</literal>, jinak
<literal>false</literal>.
</para>
<para>
Pokud je t�et� argument <parameter>strict</parameter> <literal>true</literal>,
<function>in_array</function> tak� kontroluje typ <parameter>needle</parameter>
v <parameter>haystack</parameter>.
</para>
<para>
<example>
<title>Uk�zka <function>in_array</function></title>
<programlisting role="php">
$os = array ("Mac", "NT", "Irix", "Linux");
if (in_array ("Irix", $os)){
print "Got Irix";
}
</programlisting>
</example>
</para>
<para>
<example>
<title>Uk�zka <function>in_array</function> s argumentem
<parameter>strict</parameter></title>
<programlisting role="php">
<?php
$a = array('1.10', 12.4, 1.13);
if (in_array('12.4', $a, true))
echo "'12.4' found with strict check\n";
if (in_array(1.13, $a, true))
echo "1.13 found with strict check\n";
?>
// V�stup bude:
1.13 found with strict check
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.key">
<refnamediv>
<refname>key</refname>
<refpurpose>Fetch a key from an associative array</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>key</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>key</function> vrac� index sou�asn�ho prvku pole.
</para>
<para>
Viz tak�: <function>current</function> a
<function>next</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.krsort">
<refnamediv>
<refname>krsort</refname>
<refpurpose>T��dit pole sestupn� podle kl���</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>krsort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int
<parameter><optional>sort_flags</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
T��d� pole sestupn� podle kl��� se zachov�n� asociac� index�. To je
u�ite�n� hlavn� p�i pr�ci s asociativn�mi poli.
<example>
<title><function>Krsort</function> example</title>
<programlisting role="php">
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key -> $val\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka vytiskne:
</para>
<para>
<informalexample>
<programlisting>
fruits[d] = lemon
fruits[c] = apple
fruits[b] = banana
fruits[a] = orange
</programlisting>
</informalexample>
</para>
<para>
Vlastnosti t��d�n� lze upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, detaily viz <function>sort</function>.
</para>
<simpara>
Viz tak�: <function>asort</function>,
<function>arsort</function>,
<function>ksort</function>,
<function>sort</function>,
<function>natsort</function> a
<function>rsort</function>.
</simpara>
</refsect1>
</refentry>
<refentry id="function.ksort">
<refnamediv>
<refname>ksort</refname>
<refpurpose>T��dit pole podle kl���</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ksort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int
<parameter><optional>sort_flags</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
T��d� pole podle kl��� se zachov�n� asociac� index�. To je
u�ite�n� hlavn� p�i pr�ci s asociativn�mi poli.
<example>
<title><function>Ksort</function> example</title>
<programlisting role="php">
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key -> $val\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka vytiskne:
</para>
<para>
<informalexample>
<programlisting>
fruits[a] = orange
fruits[b] = banana
fruits[c] = apple
fruits[d] = lemon
</programlisting>
</informalexample>
</para>
<para>
Vlastnosti t��d�n� lze upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, detaily viz <function>sort</function>.
</para>
<simpara>
Viz tak�: <function>asort</function>,
<function>arsort</function>,
<function>sort</function>,
<function>natsort</function> a
<function>rsort</function>.
</simpara>
<note>
<para>
Druh� argument byl p�id�n v PHP 4.
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.list">
<refnamediv>
<refname>list</refname>
<refpurpose>P�i�adit hodnoty p�om�nn�m jako kdyby byly polem</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>list</function></funcdef>
<varargs/>
</funcprototype>
</funcsynopsis>
<para>
Stejn� jako <function>array</function>, <function>list</function> vlastn�
nen� funkce, ale jazykov� konstrukt. Pou��v� se k p�i�azen� hodnot v�ce
prom�nn�m v jedn� operaci.
<example>
<title>Uk�zka <function>list</function></title>
<programlisting role="php">
<table>
<tr>
<th>Employee name</th>
<th>Salary</th>
</tr>
<?php
$result = mysql ($conn, "SELECT id, name, salary FROM employees");
while (list ($id, $name, $salary) = mysql_fetch_row ($result)) {
print (" <tr>\n".
" <td><a href=\"info.php3?id=$id\">$name</a></td>\n".
" <td>$salary</td>\n".
" </tr>\n");
}
?>
</table>
</programlisting>
</example>
</para>
<para>
Viz tak�: <function>each</function> a
<function>array</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.natsort">
<refnamediv>
<refname>natsort</refname>
<refpurpose>
T��dit pole s vyu�it�m algoritmu "p�irozen�ho t��d�n�"
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>natsort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce implementuje srovn�vac� algoritmus kter� t��d� alfanumerick�
�et�zce stejn�m zp�sobem jako �lov�k, toto se popisuje jako "p�irozen�
t��d�n�". Uk�zka rozd�lu m�zi t�mto algoritmem a b�n�mi po��ta�ov�mi
algoritmy pro �azen� �et�zc� (nap�. <function>sort</function>):
</para>
<para>
<example>
<title>Uk�zka <function>natsort</function></title>
<programlisting role="php">
$array1 = $array2 = array ("img12.png","img10.png","img2.png","img1.png");
sort($array1);
echo "Standardn� t��d�n�\n";
print_r($array1);
natsort($array2);
echo "\nP�irozen� t��d�n�\n";
print_r($array2);
</programlisting>
</example>
</para>
<para>
V��e uveden� k�d vygeneruje n�sleduj�c� v�stup:
</para>
<para>
<informalexample>
<programlisting>
Standardn� t��d�n�
Array
(
[0] => img1.png
[1] => img10.png
[2] => img12.png
[3] => img2.png
)
P�irozen� t��d�n�
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
</programlisting>
</informalexample>
V�ce informac� viz str�nka Martina Poola <ulink
url="&url.strnatcmp;">Natural Order String Comparison</ulink>.
</para>
<para>
Viz tak�: <function>natcasesort</function>,
<function>strnatcmp</function> a
<function>strnatcasecmp</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.natcasesort">
<refnamediv>
<refname>natcasesort</refname>
<refpurpose>
T��dit pole s vyu�it�m algoritmu "p�irozen�ho t��d�n�" (case-insensitive)
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>natcasesort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce implementuje srovn�vac� algoritmus kter� t��d� alfanumerick�
�et�zce stejn�m zp�sobem jako �lov�k, toto se popisuje jako "p�irozen�
t��d�n�".
</para>
<para>
<function>natcasesort</function> je case-insensitive verze
<function>natsort</function>. Uk�zka rozd�lu mezi t�mto algoritmem
a b�n�m po��ta�ov�m t��d�n�m �et�zc� viz <function>natsort</function>.
</para>
<para>
V�ce informac� viz str�nka Martina Poola <ulink
url="&url.strnatcmp;">Natural Order String Comparison</ulink>.
</para>
<para>
Viz tak�: <function>sort</function>,
<function>natsort</function>,
<function>strnatcmp</function> and
<function>strnatcasecmp</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.next">
<refnamediv>
<refname>next</refname>
<refpurpose>Posunout intern� ukazatel pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>next</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� dal�� prvek pole nebo <literal>false</literal>, pokud prvky do�ly.
</para>
<para>
<function>next</function> se chov� jako <function>current</function>, s jedn�m
rozd�lem: posouv� intern� ukazatel pole o jeden prvek a vrac� prvek, na kter�
tento ukazatel ukazuje po posunu. To znamen�, �e vrac� dal�� prvek pole
a posouv� intern� ukazatel o jeden. Pokud by ukazatel po psunu ukazoval
mimo pole, <function>next</function> vrac� <literal>false</literal>.
<warning>
<para>
Pokud toto pole obsahuje pr�zdn� prvky, nebo prvky, jejich� index je 0,
tato funkce vr�t� <literal>false</literal> i pro tyto prvky. Ke spr�vn�mu
pr�chodu polem, kter� m��e obsahovat pr�zdn� prvky nebo prvky s indexem 0
pou�ijte <function>each</function>.
</para>
</warning>
</para>
<para>
Viz tak�:
<function>current</function>,
<function>end</function>,
<function>prev</function> a
<function>reset</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pos">
<refnamediv>
<refname>pos</refname>
<refpurpose>Z�skat sou�asn� prvek pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>pos</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<simpara>
Toto je alias k <function>current</function>.
</simpara>
<para>
Viz tak�: <function>end</function>,
<function>next</function>,
<function>prev</function> a
<function>reset</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.prev">
<refnamediv>
<refname>prev</refname>
<refpurpose>Rewind intern� ukazatel pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>prev</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� prvek pole p�ed t�m prvkem, na kter� ukazuje intern� ukazatel pole,
nebo <literal>false</literal>, pokud prvky do�ly.
<warning>
<para>
Pokud toto pole obsahuje pr�zdn� prvky, tato funkce vr�t�
<literal>false</literal> i pro tyto prvky. Ke spr�vn�mu pr�chodu polem,
kter� m��e obsahovat pr�zdn� prvky pou�ijte <function>each</function>.
</para>
</warning>
</para>
<para>
<function>prev</function> se chov� stejn� jako <function>next</function>,
ale posouv� intern� ukazatel pole o jedno m�sto zp�tky m�sto dop�edu.
</para>
<para>
Viz tak�: <function>current</function>,
<function>end</function>,
<function>next</function> a
<function>reset</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.range">
<refnamediv>
<refname>range</refname>
<refpurpose>Vytvo�it pole obsahuj�c� rozsah integer�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>range</function></funcdef>
<paramdef>int <parameter>low</parameter></paramdef>
<paramdef>int <parameter>high</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>range</function> vrac� pole integer� od
<parameter>low</parameter> po <parameter>high</parameter> v�etn�.
</para>
<para>
Uk�zka pou�it� viz <function>shuffle</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.reset">
<refnamediv>
<refname>reset</refname>
<refpurpose>Nastavit intern� ukazatel pole na jeho prvn� prvek</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>reset</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>reset</function> p�eto�� intern� ukazatel pole
<parameter>array</parameter> na jeho prvn� prvek.
</para>
<para>
<function>reset</function> vrac� hodnotu prvn�ho prvku pole.
</para>
<para>
Viz tak�: <function>current</function>,
<function>each</function>,
<function>next</function> a
<function>prev</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.rsort">
<refnamediv>
<refname>rsort</refname>
<refpurpose>T��dit pole sestupn�</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>rsort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int
<parameter><optional>sort_flags</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce sestupn� t��d� pole.
<example>
<title>Uk�zka <function>rsort</function></title>
<programlisting role="php">
$fruits = array ("lemon", "orange", "banana", "apple");
rsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "$key -> $val\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
fruits[0] = orange
fruits[1] = lemon
fruits[2] = banana
fruits[3] = apple
</programlisting>
</informalexample>
</para>
<para>
Ovoce bylo set��d�no podle abecedy sestupn�.
</para>
<para>
Vlastnosti t��d�n� lze upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, detaily viz <function>sort</function>.
</para>
<para>
Viz tak�: <function>arsort</function>,
<function>asort</function>,
<function>ksort</function>,
<function>sort</function> a
<function>usort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.shuffle">
<refnamediv>
<refname>shuffle</refname>
<refpurpose>Zam�chat pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>shuffle</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>shuffle</function> zam�ch� (n�hodn� zm�n� po�ad� prvk�) pole.
Mus�te inicializovat gener�tor n�hodn�ch ��sel pomoc�
<function>srand</function>.
<example>
<title>Uk�zka <function>shuffle</function></title>
<programlisting role="php">
$numbers = range (1,20);
srand ((double)microtime()*1000000);
shuffle ($numbers);
while (list (, $number) = each ($numbers)) {
echo "$number ";
}
</programlisting>
</example>
</para>
<para>
Viz tak�: <function>arsort</function>,
<function>asort</function>,
<function>ksort</function>,
<function>rsort</function>,
<function>sort</function> a
<function>usort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.sizeof">
<refnamediv>
<refname>sizeof</refname>
<refpurpose>Zjistit po�et prvk� v poli</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>sizeof</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Vrac� po�et prvk� v poli.
</para>
<para>
Viz tak�: <function>count</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.sort">
<refnamediv>
<refname>sort</refname>
<refpurpose>T��dit pole</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>sort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>int <parameter><optional>sort_flags</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>sort</function> t��d� pole. Prvky se uspo��daj� od nejmen��ho
k nejv�t��mu.
<example>
<title>Uk�zka <function>sort</function></title>
<programlisting role="php">
<?php
$fruits = array ("lemon", "orange", "banana", "apple");
sort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
echo "fruits[".$key."] = ".$val;
}
?>
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
</programlisting>
</informalexample>
</para>
<para>
Ovoce bylo se�azeno podle abecedy.
</para>
<para>
Vlastnosti t��d�n� lze upravit pomoc� voliteln�ho argumentu
<parameter>sort_flags</parameter>, kter� m��e nab�vat t�chto hodnot:
</para>
<para>
Typy t��d�n�:
<itemizedlist>
<listitem>
<simpara>SORT_REGULAR - norm�ln� porovn�v�n�</simpara>
</listitem>
<listitem>
<simpara>SORT_NUMERIC - numerick� porovn�v�n�</simpara>
</listitem>
<listitem>
<simpara>SORT_STRING - textov� porovn�v�n�</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Viz tak�: <function>arsort</function>,
<function>asort</function>,
<function>ksort</function>,
<function>natsort</function>,
<function>natcasesort</function>,
<function>rsort</function>,
<function>usort</function>,
<function>array_multisort</function> a
<function>uksort</function>.
</para>
<note>
<para>
Druh� argument byl p�id�n v PHP 4.
</para>
</note>
</refsect1>
</refentry>
<refentry id="function.uasort">
<refnamediv>
<refname>uasort</refname>
<refpurpose>
T��dit pole pomoc� u�ivatelsky definovan� porovn�vac� funkce se zachov�n�m
kl���
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>uasort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>function <parameter>cmp_function</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce t��d� pole tak, �e si indexy uchov�vaj� spojen� s hodnotami.
To je u�ite�n� hlavn� p�i t��d�n� asociativn�ch pol�, kde je d�le�it�
po�ad� prvk�. Srovn�vac� funkce je u�ivatelsky definov�na.
</para>
<note>
<para>
Uk�zky u�ivatelsky definovan�ch porovn�vac�ch funkc� viz
<function>usort</function> a <function>uksort</function>.
</para>
</note>
<para>
Viz tak�: <function>usort</function>,
<function>uksort</function>,
<function>sort</function>,
<function>asort</function>,
<function>arsort</function>,
<function>ksort</function> a
<function>rsort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.uksort">
<refnamediv>
<refname>uksort</refname>
<refpurpose>
T��dit pole podle kl��� pomoc� u�ivatelsky definovane porovn�vac� funkce
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>uksort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>function <parameter>cmp_function</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce t��d� pole podle kl��� pomoc� u�ivatelsky definovan�
porovn�vac� funkce. Pokud pot�ebujete t��dit pole podle komplikovan�j��ch
krit�ri�, m�li byste pou��t tuto funkci.
</para>
<para>
<example>
<title>Uk�zka <function>uksort</function></title>
<programlisting role="php">
function cmp ($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array (4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");
uksort ($a, "cmp");
while (list ($key, $value) = each ($a)) {
echo "$key: $value\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
20: twenty
10: ten
4: four
3: three
</programlisting>
</informalexample>
</para>
<para>
Viz tak�: <function>usort</function>,
<function>uasort</function>,
<function>sort</function>,
<function>asort</function>,
<function>arsort</function>,
<function>ksort</function>,
<function>natsort</function> a
<function>rsort</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.usort">
<refnamediv>
<refname>usort</refname>
<refpurpose>
T��dit pole podle hodnot pomoc� u�ivatelsky definovan� porovn�vac� funkce
</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>usort</function></funcdef>
<paramdef>array <parameter>array</parameter></paramdef>
<paramdef>string <parameter>cmp_function</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Tato funkce t��d� pole podle hodnot pomoc� u�ivatelsky definovan�
porovn�vac� funkce. Pokud pot�ebujete t��dit pole podle komplikovan�j��ch
krit�ri�, m�li byste pou��t tuto funkci.
</para>
<para>
Porovn�vac� funkce mus� vrace integer men�� ne� 0, 0, a v�t�� ne� 0, pokud
je prvn� argument men�� ne�, stejn�, nebo v�t�� ne� druh� argument. Pokud
jsou dv� porovn�van� hodnoty stejn�, jejich po�ad� v t��d�n�m poli je
nedefinov�no.
</para>
<para>
<example>
<title>Uk�zka <function>usort</function></title>
<programlisting role="php">
function cmp ($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array (3, 2, 5, 6, 1);
usort ($a, "cmp");
while (list ($key, $value) = each ($a)) {
echo "$key: $value\n";
}
</programlisting>
</example>
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
0: 6
1: 5
2: 3
3: 2
4: 1
</programlisting>
</informalexample>
</para>
<note>
<para>
V tomto jednoduch�m p��pad� by pochopiteln� bylo vhodn�j�� pou��t
<function>rsort</function>.
</para>
</note>
<para>
<example>
<title>
Uk�zka <function>usort</function> s v�cerozm�rn�m polem
</title>
<programlisting role="php">
function cmp ($a, $b) {
return strcmp($a["fruit"],$b["fruit"]);
}
$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";
usort($fruits, "cmp");
while (list ($key, $value) = each ($fruits)) {
echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
</programlisting>
</example>
</para>
<para>
P�i t��d�n� v�cerozm�rn�ho pole $a a $b obsahuj� reference na prvn� index
pole.
</para>
<para>
Tato uk�zka zobraz�:
</para>
<para>
<informalexample>
<programlisting>
$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons
</programlisting>
</informalexample>
</para>
<para>
<warning>
<para>
Pou�it� quicksort funkce v n�kter�ch C knihovn�ch (nap�. na syst�mech
Solaris) m��e zp�sobit zhroucen� PHP, pokud porovn�vac� funkce nevrac�
konsistentn� hodnoty.
</para>
</warning>
</para>
<para>
Viz tak�: <function>uasort</function>,
<function>uksort</function>,
<function>sort</function>,
<function>asort</function>,
<function>arsort</function>,
<function>ksort</function>,
<function>natsort</function> a
<function>rsort</function>.
</para>
</refsect1>
</refentry>
</reference>
<!-- 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
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->