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>=&gt;</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 =&gt; 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"  =&gt; array ("a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"apple"),
    "numbers" =&gt; array (1, 2, 3, 4, 5, 6),
    "holes"   =&gt; array ("first", 5 =&gt; "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=&gt;2, "hello"=&gt;2, "world"=&gt;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" =&gt; "green", "red", "blue");
$array2 = array ("b" =&gt; "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" =&gt; "green", "red", "blue");
$array2 = array ("b" =&gt; "green", "yellow", "red");
$result = array_intersect ($array1, $array2);
      </programlisting>
     </example>
    </para>
    <para>
     <varname>$result</varname> obsahuje <literal>array ("a" =&gt; "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 =&gt; 100, "color" =&gt; "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" =&gt; array("blue", "red", "green"), "size" =&gt; 
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 &amp;&amp; $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" =&gt; "red", 2, 4);
$array2 = array ("a", "b", "color" =&gt; "green", "shape" =&gt; "trapezoid", 4);
array_merge ($array1, $array2);
      </programlisting>
     </example>
    </para>
    <para>
     V�sledn� pole bude <literal>array("color" =&gt; "green", 2, 4,
     "a", "b", "shape" =&gt; "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" =&gt; array ("favorite" =&gt; "red"), 5);
$ar2 = array (10, "color" =&gt; array ("favorite" =&gt; "green", "blue"));
$result = array_merge_recursive ($ar1, $ar2);
      </programlisting>
     </example>
    </para>
    <para>
     V�sledn� pole bude <literal>array ("color" =&gt; array
     ("favorite" =&gt; 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" =&gt; "green", "red", "b" =&gt; "green", "blue", "red");
$result = array_unique ($input);
      </programlisting>
     </example>
    </para>
    <para>
     <varname>$result</varname> te� obsahuje <literal>array ("a" =&gt;
     "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" =&gt; "XL", "color" =&gt; "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"=&gt;"lemon", "a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"apple");

function test_alter (&amp;$item1, $key, $prefix) {
    $item1 = "$prefix: $item1";
}

function test_print ($item2, $key) {
    echo "$key. $item2&lt;br&gt;\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"=&gt;"lemon", "a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"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"=&gt;"lemon", "a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"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"
       =&gt; "SIGGRAPH", "city" =&gt; "San Francisco", "state" =&gt; "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 =&gt; 0</simpara></listitem>
        <listitem><simpara>1 =&gt; 'bob'</simpara></listitem>
        <listitem><simpara>key =&gt; 0</simpara></listitem>
        <listitem><simpara>value =&gt; 'bob'</simpara></listitem>
       </itemizedlist>
       <programlisting role="php">
$foo = array ("Robert" =&gt; "Bob", "Seppo" =&gt; "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 =&gt; 'Robert'</simpara></listitem>
        <listitem><simpara>1 =&gt; 'Bob'</simpara></listitem>
        <listitem><simpara>key =&gt; 'Robert'</simpara></listitem>
        <listitem><simpara>value =&gt; '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:&lt;br&gt;";
reset ($HTTP_POST_VARS);
while (list ($key, $val) = each ($HTTP_POST_VARS)) {
    echo "$key =&gt; $val&lt;br&gt;";
}
      </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">
&lt;?php

/* P�edpokl�dejme, �e $var_array je pole vr�cen�
   z wddx_deserialize */

$size = "large";
$var_array = array ("color" =&gt; "blue",
                    "size"  =&gt; "medium",
                    "shape" =&gt; "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 &quot;'12.4' found with strict check\n&quot;;
if (in_array(1.13, $a, true))
    echo &quot;1.13 found with strict check\n&quot;;
?>

// 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"=&gt;"lemon", "a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"apple");
krsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key -&gt; $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"=&gt;"lemon", "a"=&gt;"orange", "b"=&gt;"banana", "c"=&gt;"apple");
ksort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key -&gt; $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">
&lt;table>
 &lt;tr>
  &lt;th>Employee name&lt;/th>
  &lt;th>Salary&lt;/th>
 &lt;/tr>

&lt;?php

$result = mysql ($conn, "SELECT id, name, salary FROM employees");
while (list ($id, $name, $salary) = mysql_fetch_row ($result)) {
    print (" &lt;tr>\n".
           "  &lt;td>&lt;a href=\"info.php3?id=$id\">$name&lt;/a>&lt;/td>\n".
           "  &lt;td>$salary&lt;/td>\n".
           " &lt;/tr>\n");
}

?>

&lt;/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] =&gt; img1.png
    [1] =&gt; img10.png
    [2] =&gt; img12.png
    [3] =&gt; img2.png
)

P�irozen� t��d�n�
Array
(
    [3] =&gt; img1.png
    [2] =&gt; img2.png
    [1] =&gt; img10.png
    [0] =&gt; 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 -&gt; $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">
&lt;?php

$fruits = array ("lemon", "orange", "banana", "apple");
sort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "fruits[".$key."] = ".$val;
}

?&gt;
      </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 =&gt; "four", 3 =&gt; "three", 20 =&gt; "twenty", 10 =&gt; "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:
-->

Reply via email to