slawek          Sat Mar 16 18:59:50 2002 EDT

  Added files:                 
    /phpdoc/pl/language types.xml 
  Log:
  Types.xml (version EN 1.73) DONE! DONE! DONE! (qrak)
  
  

Index: phpdoc/pl/language/types.xml
+++ phpdoc/pl/language/types.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.73 Maintainer: Qrak Status: ready -->
<!-- $Revision: 1.1 $ -->
 <chapter id="language.types">
  <title>Typy danych</title>

  <sect1 id="language.types.intro">
  <title>Wst�p</title>
  
  <simpara>
   PHP obs�uguje osiem typ�w prostych.
  </simpara>
  
  <para>
   Cztery skalarne:

   <itemizedlist>

    <listitem>
     <simpara>
      <link linkend="language.types.boolean">boolowski (boolean)</link>
     </simpara>
    </listitem>

    <listitem>
     <simpara>
      <link linkend="language.types.integer">liczba ca�kowita (integer)</link>
     </simpara>
    </listitem>

    <listitem>
     <simpara>
      <link linkend="language.types.float">liczba zmiennoprzecinkowa 
      (float)</link>
     </simpara>
    </listitem>

    <listitem>
     <simpara>
      <link linkend="language.types.string">�a�cuch znak�w (string)</link>
     </simpara>
    </listitem>

   </itemizedlist>

   Dwa typy z�o�one:

   <itemizedlist>

    <listitem>
     <simpara>
      <link linkend="language.types.array">tablica (array)</link>
     </simpara>
    </listitem>

    <listitem>
     <simpara>
      <link linkend="language.types.object">obiekt (object)</link>
     </simpara>
    </listitem>

   </itemizedlist>

   Oraz dwa typy specjalne:

   <itemizedlist>

    <listitem>
     <simpara>
      <link linkend="language.types.resource">identyfikator zasob�w
      (resource)</link>
     </simpara>
    </listitem>

    <listitem>
     <simpara>
      <link linkend="language.types.null">NULL (null)</link>
     </simpara>
    </listitem>

   </itemizedlist>
  </para>
  
  <note>
   <simpara>
    W tym podr�czniku cz�sto pojawia si� typ <literal>mixed</literal>. Ten
    pseudotyp wskazuje na mo�liwo�� u�ycia danych r�nego typu.
   </simpara>
   <!--
   
   Just an idea, maybe useful for some func-defs?
   (at least it is for the operator-defs)
   
   <simpara>
    In parameter definitions you can also encounter the 'number' pseudo-type,
    that indicates a parameter that is either <type>integer</type> or 
    <type>float</type>.
   </simpara>
   -->
  </note>


  <simpara>
   Typ danych zwykle nie jest ustalany przez programist�. Robi to PHP na
   podstawie kontekstu, w jakim zmienna jest u�ywana.
  </simpara>
  <note>
   <simpara>
    Aby sprawdzi� typ i warto�� konkretnego <link
    linkend="language.expressions">wyra�enia</link>, nale�y u�y� funkcji
    <function>var_dump</function>.
   </simpara>
   <simpara>
    Aby mie� czyteln� reprezentacj� typu dla potrzeb debugowania, nale�y u�y�
    funkcji <function>gettype</function>. Aby sprawdzi�, czy zmienna jest
    jakiego� konkretnego typu, <emphasis>nie</emphasis> u�ywaj funkcji
    <function>gettype</function>, tylko grupy funkcji 
    <literal>is_<replaceable>jaki�_typ</replaceable></literal>.
   </simpara>
   <!-- TODO: example(s) would be great -->
  </note>
  <simpara>
   Aby narzuci� konwersj� zmiennej do okre�lonego typu, mo�na albo <link
   linkend="language.types.typecasting">rzutowa�</link> zmienn�, albo u�y�
   funkcji <function>settype</function>.
  </simpara>
  <simpara>
   Prosz� pami�ta�, �e w pewnych sytuacjach zmienne mog� si� zachowywa� r�nie,
   w zale�no�ci od tego, jakiego typu s� w danej chwili. Wi�cej informacji
   w rozdziale <link
   linkend="language.types.type-juggling">wykorzystywanie typ�w danych</link>.
  </simpara>
  
   
   </sect1>
   
   <sect1 id="language.types.boolean">
    <title>Zmienne Logiczne (Boolowskie - boolean)</title>
    
    <simpara>
     Ten rodzaj jest najprostszy. Typ <type>boolean</type> wyra�a logiczn�
     prawd� lub fa�sz. Mo�e mie� warto�ci &true; lub &false;.
    </simpara>

    <note>
     <simpara>
      Typ boolowski zosta� wprowadzony w PHP 4.
     </simpara>
    </note>

    <sect2 id="language.types.boolean.syntax">
     <title>Sk�adnia</title>
     <para>
      Aby utworzy� warto�� boolowsk�, nale�y u�y� s��w kluczowych &true; lub
      &false;. Wielko�� liter w tych s�owach nie gra roli.
      <!-- technically they are just constants -->
      <informalexample>
       <programlisting role="php">
<![CDATA[
$foo = True; // przypisanie warto�ci logicznej prawda do $foo     
]]>
       </programlisting>
      </informalexample>
     </para>
     <para>
      Ten typ najcz�ciej u�ywany jest przy
      <link linkend="language.operators">operatorach</link>, kt�re zwracaj�
      warto�� typu <type>boolean</type>, kt�r� nast�pnie przekazuje si�
      do <link linkend="control-structures">struktur kontrolnych</link>.
      <informalexample>
       <programlisting role="php">
<![CDATA[
// == jest operatorem, kt�ry zwraca warto�� boolowsk�
if ($akcja == "poka�_wersj�") {
    echo "Wersja 1.23";
}

// to nie jest konieczne:
if ($poka�_separatory == TRUE) {
    echo "<hr>\n";
}

// gdy� wystarczy tak:
if ($poka�_separatory) {
    echo "<hr>\n";
}
]]>
       </programlisting>
      </informalexample>
     </para>
    </sect2>

    <sect2 id="language.types.boolean.casting">
     <title>Konwersja do typu boolowskiego</title>
      <simpara>
       Aby jawnie skonwertowa� warto�� na typ <type>boolean</type>, nale�y
       u�y� rzutowania <literal>(bool)</literal> lub
       <literal>(boolean)</literal>. Jednak�e w wi�kszo�ci przypadk�w nie ma
       potrzeby u�ycia rzutowania, poniewa� warto�� b�dzie automatycznie
       skonwertowana na typ <type>boolean</type>, je�li operator, funkcja lub
       struktura kontrolna wymaga argumentu tego w�a�nie typu.
      </simpara>
      <simpara>
       Zobacz te�
       <link linkend="language.types.type-juggling">wykorzysytwanie typ�w
       danych</link>.
      </simpara>
      
      <para>
       Przy konwersji na typ <type>boolean</type>, poni�sze warto�ci otrzymuj�
       warto�� logiczn� &false;:
  
       <itemizedlist>
        <listitem>
         <simpara><link linkend="language.types.boolean">boolowski</link> 
          &false;<!-- duh... --></simpara>
        </listitem>
        <listitem>
         <simpara>liczba <link linkend="language.types.integer">ca�kowita</link
         > 0 (zero) </simpara>
        </listitem>
        <listitem>
         <simpara>liczba
         <link linkend="language.types.float">zmiennoprzecinkowa</link> 
         0.0 (zero) </simpara>
        </listitem>
        <listitem>
         <simpara>pusty <link linkend="language.types.string"
           >�a�cuch znak�w</link>, oraz <link linkend="language.types.string"
           >�a�cuch znak�w</link> "0"</simpara>
        </listitem>
        <listitem>
         <simpara><link linkend="language.types.array">tablica</link> 
         z zerow� liczb� element�w</simpara>
        </listitem>
        <listitem>
         <simpara><link linkend="language.types.object">obiekt</link> 
         z zerow� liczb� element�w</simpara>
        </listitem>
        <listitem>
         <simpara>specjalny typ <link linkend="language.types.null"
           >NULL</link> (w��czaj�c niezadeklarowane zmienne)
         </simpara>
        </listitem>
       </itemizedlist>
       
       Ka�da inna warto�� otrzymuje logiczn� warto�� &true; (w��czaj�c w to
       <link linkend="language.types.resource">identyfikatory zasob�w</link>).
       <warning>
        <simpara>
         <literal>-1</literal> tak�e ma warto�� &true;, jak ka�da niezerowa
         (ujemna lub dodatnia) liczba!
        </simpara>
       </warning>
       <!-- TODO: add a few examples, for the people only looking at 
            the examples... -->
      </para>
     
    </sect2>

   </sect1>

   <sect1 id="language.types.integer">
    <title>Liczby ca�kowite (integer)</title>
    
    <simpara>
     Typ <type>integer</type> to liczba ca�kowita, nale��ca do przedzia�u
     Z = {..., -2, -1, 0, 1, 2, ...}.
    </simpara>
     
    <para>
     Zobacz te�:
     <link linkend="ref.gmp">Liczby ca�kowite du�ej precyzji</link> oraz
     <link linkend="language.types.float">Liczby zmiennoprzecinkowe</link>
    </para>

    <sect2 id="language.types.integer.syntax">
     <title>Sk�adnia</title>
     <simpara>
      Liczby ca�kowite mog� by� zapisane w notacji dziesi�tnej (opartej na 10),
      szesnastkowej (opartej na 16) lub �semkowej (opartej na 8), opcjonalnie
      poprzedzone znakiem (- lub +).
     </simpara>
     <para>
      Aby zapisa� liczb� w notacji �semkowej, nale�y poprzedzi� w�a�ciw� liczb�
      symbolem <literal>0</literal> (zero). W notacji szesnastkowej liczb�
      nale�y poprzedzi� symbolem <literal>0x</literal>.
      <example>
       <title>Notacja liczb ca�kowitych</title>
       <programlisting role="php">
<![CDATA[
$a = 1234; # liczba dziesi�tna
$a = -123; # ujemna liczba dziesi�tna
$a = 0123; # liczba �semkowa (odpowiednik dziesi�tnej 83)
$a = 0x1A; # liczba szesnastkowa (odpowiednik dziesi�tnej 26)
]]>
       </programlisting>
      </example>
      <!--

       decimal     : [1-9][0-9]*
                   | 0
       
       hexadecimal : 0[xX][0-9a-fA-F]+
       
       octal       : 0[0-7]+
       
       integer     : [+-]?decimal
                   | [+-]?hexadecimal
                   | [+-]?octal
       
       -->
      Maksymalna wielko�� liczby ca�kowitej jest zale�na od platformy
      operacyjnej, zwykle jest to oko�o dwa miliardy (jest to 32 bity ze
      znakiem). PHP nie obs�uguje liczb ca�kowitych bez znaku.
     </para>
    </sect2>
   
    <sect2 id="language.types.integer.overflow">
     <title>Wyj�cie poza zakres liczb ca�kowitych</title>
     <para>
      W przypadku zapisania liczby ca�kowitej wykraczaj�cej poza zakres typu
      <type>integer</type>, liczba ta zostanie potraktowana jako typ
      <type>float</type>. R�wnie� je�li rezultat operacji b�dzie wykracza� poza
      typ <type>integer</type>, jako wynik zostanie zwr�cony typ 
      <type>float</type>.
      <informalexample>
       <programlisting role="php">
<![CDATA[
$du�a_liczba =  2147483647;
var_dump($du�a_liczba);
// wynik: int(2147483647)

$du�a_liczba =  2147483648;
var_dump($du�a_liczba);
// wynik: float(2147483648)

// tak samo dzieje si� przy warto�ciach szesnastkowych:
var_dump( 0x80000000 );
// wynik: float(2147483648)

$million = 1000000;
$du�a_liczba =  50000 * $million;
var_dump($du�a_liczba);
// wynik: float(50000000000)
]]>
       </programlisting>
      </informalexample>
      <warning>
       <simpara>
        Niestety, b��d w PHP powodowa� czasem nieprawid�ow� prac� z liczbami
        ujemnymi. Na przyk�ad: wynikiem dzia�ania <literal>-50000 *
        $million</literal> by�a liczba <literal>-429496728</literal>. B��d ten
        pojawia� si� tylko przy liczbach ujemnych i nie dotyczy� warto�ci
        dodatnich.
       </simpara>
       <simpara>
        Powy�szy problem zosta� rozwi�zany w PHP 4.1.0.
       </simpara>
      </warning>
     </para>
     <para>
      W PHP nie ma operatora dzielenia ca�kowitego.
      <literal>1/2</literal> daje wynik typu <type>float</type> o warto�ci
      <literal>0.5</literal>.
       <!-- See ??? for more information. (with the
      operators, or with type-jug) -->
      <informalexample>
       <programlisting role="php">
<![CDATA[
var_dump( 25/7 );
// wynik: float(3.5714285714286)
]]>
       </programlisting>
      </informalexample>
     </para>
    </sect2>
   

    <sect2 id="language.types.integer.casting">
     <title>Konwersja na liczby ca�kowite</title>
      <simpara>
       Do jawnej konwersji warto�ci na typ <type>integer</type> u�ywa si�
       operatora rzutowania <literal>(int)</literal> lub
       <literal>(integer)</literal>. W wi�kszo�ci przypadk�w jednak rzutowanie
       nie jest potrzebne, gdy� warto�� zostanie skonwertowana automatycznie,
       o ile operator, funkcja lub struktura kontrolna wymaga argumentu typu
       <type>integer</type>.
      </simpara>
      <simpara>
       Zobacz te� 
       <link linkend="language.types.type-juggling">wykorzystywanie 
       typ�w danych</link>.
      </simpara>
      
      <sect3 id="language.types.integer.casting.from-boolean">
       <title>Z <link linkend="language.types.boolean"
           >boolowskiej</link></title>
       <simpara>
        &false; b�dzie mie� warto�� 
        <literal>0</literal> (zero), a &true; 
        b�dzie mie� warto�� <literal>1</literal> (jeden).
       </simpara>
      </sect3>

      <sect3 id="language.types.integer.casting.from-float">
       <title>Z <link linkend="language.types.float">liczb
       zmiennoprzecinkowych</link></title> 
       <simpara>
        Przy konwersji z liczb zmiennoprzecinkowych do ca�kowitych, liczba
        zostanie zaokr�glona <emphasis>w d�</emphasis>.
       </simpara>
       
       <para>
        Je�li liczba zmiennoprzecinkowa jest poza zakresem liczb ca�kowitych,
        (zwykle <literal>+/- 2.15e+9 = 2^31</literal>), wynik operacji
        rzutowania jest niezdefiniowany, poniewa� liczba zmiennoprzecinkowa nie
        ma odpowiedniej precyzji, aby zwr�ci� dok�adn� liczb� ca�kowit�. W tej
        sytuacji nie pojawi si� �adne ostrze�enie ani informacja odno�nie
        powsta�ego b��du!
       </para>
       
       <warning><para>
        Nigdy nie nale�y rzutowa� nieznanego u�amka do typu
        <type>integer</type>, gdy� mo�e to doprowadzi� do otrzymania
        nieprzewidywalnych wynik�w.
        <informalexample>
         <programlisting role="php">
<![CDATA[
echo (int) ( (0.1+0.7) * 10 ); // wy�wietla 7!
]]>
         </programlisting>
        </informalexample>
        
        Wi�cej informacji na ten temat w rozdziale <link 
        linkend="warn.float-precision">precyzja liczb
        zmiennoprzecinkowych</link>.
       </para></warning>
      </sect3>
      
      <sect3 id="language.types.integer.casting.from-string">
       <title>Z �a�cuch�w znak�w</title>
       <simpara>
        Zobacz <link linkend="language.types.string.conversion">konwersja
        �a�cuch�w znak�w</link>
       </simpara>
      </sect3>
      
      <sect3 id="language.types.integer.casting.from-other">
       <title>Z innych typ�w</title>
       <para>
        <caution>
         <simpara>
          Wynik konwersji do liczb ca�kowitych z innych typ�w jest nieokre�lony.
          Obecnie zachowanie jest takie samo, jakby zmienna zosta�a najpierw
          <link linkend="language.types.boolean.casting">skonwertowana do
          typu boolowskiego</link>. <emphasis>Nie</emphasis> nale�y jednak
          polega� na tym zachowaniu, gdy� mo�e ono ulec zmianie bez �adnego
          ostrze�enia.
         </simpara>
        </caution>
       </para>
       <!--
        
        IMO, it would more sense as (int) $arr returned the 
        number of elements in $arr. This won't break anything,
        since this behaviour was never defined before, and 
        (bool)(int) $arr will still behave the same.
        
        -->
      </sect3>
      
    </sect2>
  </sect1>

  <sect1 id="language.types.float">
   <title>Liczby zmiennoprzecinkowe (float)</title>
   <para>
    Liczby zmiennoprzecinkowe (typ float, double lub liczby rzeczywiste)
    mog� by� zapisane przy u�yciu dowolnej z poni�szych sk�adni:
    <synopsis>
$a = 1.234; $a = 1.2e3; $a = 7E-10;
    </synopsis>
    <!--  
    
LNUM    [0-9]+
DNUM    ([0-9]*[\.][0-9]+)|([0-9]+[\.][0-9]*)
EXPONENT_DNUM   (({LNUM}|{DNUM})[eE][+-]?{LNUM})
    
    -->
    Maksymalna wielko�� liczby zmiennoprzecinkowej jest zale�na od platformy
    operacyjnej, zwykle jest to ~1.8e308, przy precyzji 14 liczb dziesi�tnych
    po przecinku (jest to 64 bitowy format IEEE).
   </para>
   <warning id="warn.float-precision">
    <title>Precyzja liczb zmiennoprzecinkowych</title>
    <para>
     Jest oczywiste, �e nawet proste u�amki dziesi�tne, takie jak
     <literal>0.1</literal> lub <literal>0.7</literal>, nie mog� zosta�
     skonwertowane na ich dw�jkowe odpowiedniki bez niewielkiej straty
     dok�adno�ci. Mo�e to powodowa� pewne problemy: na przyk�ad wyra�enie
     <literal>floor((0.1+0.7)*10)</literal> zwykle ma warto��
     <literal>7</literal>, zamiast oczekiwanej <literal>8</literal>, gdy�
     wewn�trzna reprezentacja tego warto�ci to liczba 
     <literal>7.9999999999...</literal>.
    </para>
    <para>
     Powi�zane jest to z faktem, �e dla pewnych u�amk�w zwyk�ych nie istnieje
     sko�czone rozwini�cie dziesi�tne. Na przyk�ad <literal>1/3</literal> w
     reprezentacji dziesi�tnej ma warto�� <literal>0.3333333. . .</literal>.
    </para>
    <para>
     Dlatego nigdy nie nale�y wierzy� liczbom zmiennoprzecinkowym do ostatniej
     cyfry i nigdy nie nale�y wykonywa� operacji por�wnania na stwierdzenie
     r�wno�ci. Do operacji na liczbach zmiennoprzecinkowych o naprawd� du�ej
     precyzji nale�y u�y� <link
     linkend="ref.bc">biblioteki BCMath</link> lub funkcji 
     <link linkend="ref.gmp">gmp</link>.
    </para>
   </warning>
  </sect1>

  <sect1 id="language.types.string">
   <title>�a�cuchy znak�w (string)</title>
   <para>
    Typ <type>string</type> oznacza �a�cuch znak�w. W PHP znak jest tym sam co
    bajt, co oznacza, �e jest mo�liwych 256 r�nych znak�w. Oznacza to tak�e,
    �e PHP nie posiada �adnej wbudowanej obs�ugi Unikodu.
    <!-- how about unicode? will we support that eventually? Are
    there current any ways to work with unicode?
    -->
   </para>
   <note>
    <simpara>
     Nie ma technicznych problem�w, kt�re utrudnia�yby tworzenie bardzo d�ugich
     ci�g�w znak�w. Nie ma te� ustalonej maksymalnej d�ugo�ci �a�cuch�w znak�w
     obs�ugiwanych w PHP, wi�c nie ma powodu do obaw, �e dany �a�cuch jest zbyt
     d�ugi.
    </simpara>
   </note>
   <sect2 id="language.types.string.syntax">
    <title>Sk�adnia</title>
    <para>
     �a�cuch znak�w mo�na utworzy� na trzy sposoby.
     <itemizedlist>

      <listitem>
       <simpara>
        <link linkend="language.types.string.syntax.single">pojedyncze
        cudzys�owy</link>
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        <link linkend="language.types.string.syntax.double">podw�jne
        cudzys�owy</link>
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        <link linkend="language.types.string.syntax.heredoc">sk�adnia
        heredoc</link>
       </simpara>
      </listitem>

     </itemizedlist>
    </para>
    <sect3 id="language.types.string.syntax.single">
     <title>Pojedyncze cudzys�owy</title>
     <para>
      Najprostszym spos�bem na zdefiniowanie prostego �a�cucha znak�w, jest
      umieszczenie go w pojedynczych cudzys�owach (znak <literal>'</literal>).
     </para>
     <para>
      Aby w takim �a�cuch umie�ci� symbol pojedynczego cudzys�owu, nale�y go
      poprzedzi� uko�nikiem wstecznym (<literal>\</literal>), tak jak w wielu
      innych j�zykach programowania. Je�li uko�nik wsteczny ma wyst�pi� przed
      symbolem pojedynczego cudzys�owu lub na ko�cu �a�cucha, wtedy nale�y
      napisa� go dwukrotnie. W przypadku u�ycia uko�nika wstecznego z innym
      znakiem, uko�nik te� zostanie wy�wietlony! Nie ma zatem potrzeby pisania
      uko�nika dwukrotnie w innych sytuacjach.
      <note>
       <simpara>
        W PHP 3, ostrze�enie na poziomie <literal>E_NOTICE</literal> zostanie
        wy�wietlone, je�li zajdzie powy�sza sytuacja.
       </simpara>
      </note>
      <note>
       <simpara> 
        W przeciwie�stwie do dw�ch pozosta�ych sk�adni, zmienne
        <emphasis>nie</emphasis> b�d� zamienione na swoje warto�ci, kiedy
        pojawi� si� pomi�dzy pojedynczymi cudzys�owami.
       </simpara>
      </note>
      <informalexample>
       <programlisting role="php">
<![CDATA[
echo 'przyk�adowy tekst';
echo 'Wewn�trz �a�cuch�w znak�w mog� si� znajdowa� prze�amania linii,
o w�a�nie takie.';
echo 'Adam powiedzia�: "I\'ll be back"';
// wynik: ... "I'll be back"
echo 'Czy na pewno chcesz skasowa� C:\\*.*?';
// wynik: ... skasowa� C:\*.*?
echo 'Czy na pewno chcesz skasowa� C:\*.*?';
// wynik: ... skasowa� C:\*.*?
echo 'Pr�buj� w tym miejscu wprowadzi�: \n znak nowej linii';
// wynik: ... wprowadzi�: \n znak nowej linii
]]>
       </programlisting>
      </informalexample>
     </para>
    </sect3>
    <sect3 id="language.types.string.syntax.double">
     <title>Podw�je cudzys�owy</title>
     <para>
      Kiedy �a�cuch znak�w jest umieszczony pomi�dzy podw�jnymi cudzys�owami,
      PHP interpretuje wi�cej sekwencji cytowania dla znak�w specjalnych:
     </para>
     <table>
      <title>Znaki cytowane (specjalne)</title>
      <tgroup cols="2">
       <thead>
        <row>
         <entry>sekwencja</entry>
         <entry>znaczenie</entry>
        </row>
       </thead>
       <tbody>
        <row>
         <entry><literal>\n</literal></entry>
         <entry>nowa linia (LF lub 0x0A (10) w ASCII)</entry>
        </row>
        <row>
         <entry><literal>\r</literal></entry>
         <entry>powr�t karetki (CR lub 0x0D (13) w ASCII)</entry>
        </row>
        <row>
         <entry><literal>\t</literal></entry>
         <entry>tabulacja pozioma (HT lub 0x09 (9) w ASCII)</entry>
        </row>
        <row>
         <entry><literal>\\</literal></entry>
         <entry>odwrotny uko�nik</entry>
        </row>
        <row>
         <entry><literal>\$</literal></entry>
         <entry>znak dolara</entry>
        </row>
        <row>
         <entry><literal>\"</literal></entry>
         <entry>cudzys��w podw�jny</entry>
        </row>
        <row>
         <entry><literal>\[0-7]{1,3}</literal></entry>
         <entry>
          sekwencja znak�w pasuj�ca do powy�szego wyra�enia regularnego daje
          znak zapisany w notacji �semkowej
         </entry>
        </row>
        <row>
         <entry><literal>\x[0-9A-Fa-f]{1,2}</literal></entry>
         <entry>
          sekwencja znak�w pasuj�ca do powy�szego wyra�enia regularnego daje
          znak zapisany w notacji szesnastkowej
         </entry>
        </row>
       </tbody>
      </tgroup>
     </table>
     <para>
      Tak jak w poprzedniej sk�adni, zapisanie uko�nika wstecznego przed
      ka�dym innymi znakiem spowoduje wy�wietlenie zar�wno uko�nika, jak i
      znaku.
     </para>
     <para>
      Ale najwa�niejsz� w�a�ciwo�ci� podw�jnych cudzys�ow�w jest to, �e zapisane
      w nich zmienne zostan� zamienione na ich warto�ci. Wi�cej informacji
      w rozdziale <link linkend="language.types.string.parsing">parsowanie
      �a�cuch�w znak�w</link>.
     </para>
    </sect3>
    
    <sect3 id="language.types.string.syntax.heredoc">
     <title>Sk�adnia Heredoc</title>
     <simpara>
      Jeszcze jednym sposobem na zapisanie �a�cucha znak�w jest u�ycie skladni
      heredoc ("&lt;&lt;&lt;"). Po operatorze <literal>&lt;&lt;&lt;</literal>
      powinno si� umie�ci� identyfikator i takim samym identyfikatorem trzeba
      zako�czy� �a�cuch znak�w.
     </simpara>     
     <simpara>
      Identyfikator zamykaj�cy <emphasis>musi</emphasis> zaczyna� si� w
      pierwszej kolumnie nowej linii. Identyfikator musi te� podlega� regu�om
      nazewnictwa w PHP: musi si� sk�ada� wy��cznie z alfanumerycznych znak�w
      oraz znaku podkre�lenia i musi zaczyna� si� od litery lub znaku
      podkre�lenia.
     </simpara>
     
     <warning>
      <simpara>
       Wa�ne by pami�ta�, �e linia zawieraj�ca identyfikator zamykaj�cy nie
       mo�e zawiera� �adnych innych znak�w, z <emphasis>wyj�tkiem</emphasis>
       �rednika (<literal>;</literal>). Znaczy to przede wszystkim, �e
       identyfikator zamykaj�cy <emphasis>nie mo�e by� wcinany</emphasis>,
       i nie mo�e by� �adnych spacji ani tabulacji przed lub za �rednikiem.
      </simpara>
      <simpara>
       Najbardziej dokuczliwym ograniczeniem jest to, �e wewn�trz tego �a�cucha
       znak�w nie mo�e by� znaku powrotu karetki (<literal>\r</literal>) na
       ko�cu linii, jedynie znak nowej linii (<literal>\n</literal>).
       Poniewa� Microsoft Windows u�ywa jako znaku ko�ca linii sekwencji
       <literal>\r\n</literal>, �a�cuchy znak�w zapisne w sk�adni heredoc
       mog� nie dzia�a�, je�li skrypt zostanie napisany w edytorze windowsowym.
       Na szcz�cie wi�kszo�� edytor�w tekstowych udost�pnia mo�liwo�� zapisania
       pliku w uniksowym formacie ko�ca linii.
       <!--
       FTP will sometimes automatically convert \r\n to \n while
       transferring your files to your webserver (which
       is *nix, of course)
       -->
      </simpara>
     </warning>

     <para>
      Sk�adnia heredoc zachowuje si� podobnie jak tekst w cudzys�owach
      podw�jnych. Oznacza to te�, ze nie ma potrzeby cytowania cudzys�ow�w w tej
      sk�adni, ale nadal mo�na u�ywa� znak�w cytowanych, opisanych powy�ej.
      W tej sk�adni nazwa zmiennej zamieniana jest na jej warto��, ale nale�y
      zachowa� ostro�no�� przy zapisie z�o�onych zmiennych razem z tekstem.
      <example> 
       <title>Przyk�ad sk�adni heredoc</title>
       <programlisting role="php">
<![CDATA[
<?php
$str = <<<EOD
Przyk�ad �a�cucha znak�w,
zajmuj�cego kilka linii,
zapisanego w sk�adni heredoc.

Przyk�adowe zastosowanie w przezentacji liryki.

Litwo! Ojczyzno moja! ty jeste� jak zdrowie;
Ile ci� trzeba ceni�, ten tylko si� dowie,
Kto ci� straci�. Dzi� pi�kno�� tw� w ca�ej ozdobie
Widz� i opisuj�, bo t�skni� po tobie.
\tAdam Mickiewicz - Pan Tadeusz
EOD;

/* Bardziej z�o�ony przyk�ad, ze zmiennymi */
class foo
{
    var $foo;
    var $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MojeImi�';

echo <<<EOT
Nazywam si� "$name". Wy�wietlam $foo->foo.
A teraz wy�wietlam z tablicy: {$foo->bar[1]}.
Po dwukropku powinien pojawi� si� znak 'A': \x41
EOT;
?>
]]>
       </programlisting>
      </example>
     </para>
  
     <note>
      <para>
       Obs�uga sk�adni heredoc zosta�a dodana w PHP 4.
      </para>
     </note>
  
    </sect3>
    <sect3 id="language.types.string.parsing">
     <title>Parsowanie zmiennych</title>
     <simpara>
      Kiedy �a�cuch znak�w jest zapisany w cudzys�owach podw�jnych lub w sk�adni
      heredoc, zawarte w nim nazwy zmiennych s� parsowane, tzn. 
      zamieniane na ich warto�ci.
     </simpara>
     <simpara>
      S� dwa rodzaje sk�adni,
      <link linkend="language.types.string.parsing.simple">prosta</link>
      i
      <link linkend="language.types.string.parsing.complex">z�o�ona</link>.
      Sk�adnia prosta jest najbardziej popularna i najwygodniejsza, pozwala
      na parsowanie zmiennej, warto�ci z tablicy oraz w�a�ciwo�ci obiektu.
     </simpara>
     <simpara>
      Sk�adnia z�o�ona pojawi�a si� w PHP 4, i mo�na j� rozpozna� po nawiasach
      sze�ciennych, otaczaj�cych wyra�enie.
     </simpara>
     <sect4 id="language.types.string.parsing.simple">
      <title>Sk�adnia prosta</title>
      <simpara>
       Je�li wewn�trz zmiennej pojawi si� znak dolara (<literal>$</literal>),
       parser pobierze, jak najwi�cej tylko si� da znak�w, aby utworzy� poprawn�
       nazw� zmiennej. Aby jawnie okre�li� koniec nazwy zmiennej, nale�y j�
       zapisa� w nawiasach sze�ciennych.
      </simpara>
      <informalexample>
       <programlisting role="php">
<![CDATA[
$beer = 'Heineken';
echo "$beer's taste is great"; /* dzia�a, "'" nie jest poprawnym znakiem nazwy
zmiennej*/
echo "He drunk some $beers"; /* nie dzia�a, 's' jest poprawnym znakiem nazwy
zmiennej*/ 
echo "He drunk some ${beer}s"; // dzia�
]]>
       </programlisting>
      </informalexample>
      <simpara>
       Podobnie dzia�a parsowanie elementu tablicy lub w�a�ciwo�ci obiektu.
       Dla tablic, prawy nawias prostok�tny (<literal>]</literal>) oznacza
       koniec indeksu. Dla w�a�ciwo�ci obiektu obowi�zuj� te same regu�y
       jak dla zwyk�ych zmiennych, jednak nie dzia�aj� tu opisane powy�ej
       sztuczki ze zmiennymi.
       
       <!-- XXX isn't &true; :(, this would be the trick
       Also,
       the same trick with curly-braces works if you
       want to limit the greediness of parsers (aren't they
       paying them enough or something?).
       -->
      
      </simpara>
      <informalexample>
       <programlisting role="php">
<![CDATA[
$owoce = array( 'truskawka' => 'czerwona' , 'banan' => '��ty' );

// zauwa� �e to dzia�a inaczej poza cudzys�owami
echo "Banan jest $owoce[banan].";

echo "Kwadrat ma szeroko�� $kwadrat->szeroko�� metr�w.";

// Nie dzia�a. Trzeba tu zastosowa� sk�adni� z�o�on�
echo "Kwadrat ma szeroko�� $kwadrat->szeroko��00 centymetr�w.";

]]>
<!-- XXX this won't work:
echo "This square is $square->{width}00 centimeters broad."; 
// XXX: php developers: it would be consequent to make this work.
// XXX: like the $obj->{expr} syntax outside a string works, 
// XXX: analogously to the ${expr} syntax for variable var's.
-->
       </programlisting>
      </informalexample>
      <simpara>
       Do wyra�e� bardziej skomplikowanych nale�y u�ywa� sk�adni z�o�onej.
      </simpara>
     </sect4>
     <sect4 id="language.types.string.parsing.complex">
      <title>Sk�adnia z�o�ona</title>
      <simpara>
       Nazwa tej sk�adni nie pochodzi od skomplikowanego zapisu, tylko od
       jej mo�liwo�ci obs�ugi z�o�onych wyra�e�.
     </simpara>
     <simpara>
      Za pomoc� tej sk�adni mo�na umieszcza� w �a�cuchach znak�w ka�d� warto��
      istniej�c� w przestrzeni nazw. Odpowiednie wyra�enie pisze si� tak, jakby
      mia�o ono znajdowa� si� gdziekolwiek poza ���cuchem znak�w, a potem tylko
      umieszcza si� je mi�dzy { i }. Poniewa� nie mo�na cytowa� "{", sk�adnia
      ta b�dzie prawid�owo rozpoznana tylko wtedy, kiedy $ znajduje si�
      bezpo�rednio za {. (U�yj "{\$" lub "\{$" aby uzyska� "{$"). Poni�ej kilka
      przyk�ad�w:
     </simpara>
     <informalexample>
      <programlisting role="php">
<![CDATA[
$fajne = 'fantastyczne';
echo "To jest { $fajne}"; // nie dzia�a, zwraca: To jest { fantastyczne}
echo "To jest {$fajne}";  // dzia�a, zwraca: To jest fantastyczne
echo "Kwadrat ma szeroko�� {$kwadrat->szeroko��}00 centimetr�w."; 
echo "To dzia�a: {$arr[4][3]}";     

// Tak jest �le z tego samego powodu
// co $foo[bar] poza �a�cuchem. 
echo "Tak jest �le: {$arr[foo][3]}"; 

echo "Prawid�owo jest tak: {$arr['foo'][3]}";
echo "Mo�na nawet pisa� tak: {$obj->warto�ci[3]->nazwa}";
echo "To jest warto�� zmiennej o nazwie $nazwa: {${$nazwa}}";
]]>
<!-- maybe it's better to leave this out?? 
// this works, but i disencourage its use, since this is NOT 
// involving functions, rather than mere variables, arrays and objects.
$beer = 'Heineken';
echo "I'd like to have another {${ strrev('reeb') }}, hips";
 -->
       </programlisting>
      </informalexample>
     </sect4>
    </sect3>
    
    <sect3 id="language.types.string.substr">
     <title>Indeksowanie �a�cucha (ofsety)</title>
     <para>
      Dost�p do pojedynczego znaku �a�cucha jest mo�liwy po podaniu jego
      indeksu (ofsetu) w nawiasach sze�ciennych, zaraz po nazwie zmiennej.
      Pierwszy znak w �a�cuchu ma indeks zero.
     </para>
     <note>
      <simpara>
       Dla zachowania kompatybilno�ci wstecznej, nadal mo�na u�ywa� nawias�w
       kwadratowych, jednak sk�adnia ta, w PHP 4, jest uznana za przestarza��.
      </simpara>
     </note>
     <para>
      <example>
       <title>Przyk�ady u�ywania �a�cuch�w znak�w</title>
       <programlisting role="php">
<!-- TODO: either move these examples to a example section,
as with arrays, or distribute them under the applicable
sections. -->
<![CDATA[
<?php
/* Przypisywanie �a�cucha do zmiennej */
$str = "To jest �a�cuch znak�w";

/* Do��czanie innego �a�cucha */
$str = $str . " a to jego dalsza cz��";

/* inny spos�b do��czania, ze znakiem nowej linii na ko�cu */
$str .= " wraz ze znakiem nowej linii na ko�cu.\n";

/* Ten �a�cuch b�dzie zawiera�: "<p>Liczba: 9</p>" */
$num = 9;
$str = "<p>Liczba: $num</p>";

/* Natomiast tutaj b�dzie: "<p>Liczba: $num</p>" */
$num = 9;
$str = '<p>Liczba: $num</p>';

/* Pobranie pierwszego znaku �a�cucha  */
$str = 'To jest przyk�ad.';
$pierwszy = $str{0};

/* Ostatni znak �a�cucha */
$str = 'Dalsza cz�� przyk�adu.';
$ostatni = $str{strlen($str)-1};
?>
]]>
       </programlisting>
      </example>
     </para>
    </sect3>

   </sect2><!-- end syntax -->

   <sect2 id="language.types.string.useful-funcs">
    <title>Przydatne funkcje i operatory</title><!-- and operators -->
    <para>
     �a�cuchy znak�w ��czy si� za pomoc� operatora '.' (kropka). Prosz�
     pami�ta�, �e operator dodawania '+' nie obs�uguje ��czenia �a�cuch�w.
     Wi�cej informacji w rozdziale 
     <link linkend="language.operators.string">operatory �a�cuchowe</link>.
    </para>
    <para>
     PHP posiada mn�stwo funkcji operuj�cych na �a�cuchach znak�w.
    </para>
    <simpara>
     Najwi�cej na ten temat w rozdziale 
     <link linkend="ref.strings">funkcje �a�cuchowe</link>. Poza tym obs�ugiwane
     s� wyra�enia regularne dla potrzeb zaawnsowanych operacji znajd� i zamie�
     (w dw�ch odmianach: <link linkend="ref.pcre">Perl</link> oraz 
     <link linkend="ref.regex">POSIX extended</link>).
    </simpara>
    <simpara>
     S� tak�e <link linkend="ref.url">funkcje obs�ugi �a�cuch�w URL</link>,
     jak r�wnie� funkcje szyfrowania i deszyfrowania �a�cuch�w 
     (<link linkend="ref.mcrypt">mcrypt</link> oraz 
     <link linkend="ref.mhash">mhash</link>).
    </simpara>
    <simpara>
     Je�li nadal nie znalaz�e� tego, czego potrzebujesz, by� mo�e pomog�
     ci <link linkend="ref.ctype">funkcje kontroli typu znak�w</link>.
    </simpara>
   </sect2>
   <sect2 id="language.types.string.conversion">
    <title>Konwersja �a�cuch�w znak�w</title>

    <simpara>
     Je�li �a�cuch znak�w jest konwertowany na posta� liczbow�, rezultat
     konwersji b�dzie zale�a� od poni�szych czynnik�w.
    </simpara>
    <simpara>
     �a�cuch zostanie skonwertowany do typu <type>float</type>, je�li zawiera
     znaki ".", "e" lub "E". W przeciwnym razie zostanie skonwertowany do typu
     <type>integer</type>.
    </simpara>
    <para>
     Warto�� liczbowa �a�cucha znak�w zale�y od pierwszych znak�w tego
     �a�cucha. Je�li �a�cuch zaczyna si� od poprawnej warto�ci liczbowej,
     warto�� ta b�dzie u�ywa przy konwersji. W przeciwnym razie zwr�cona b�dzie
     warto�� 0 (zero). Poprawna warto�� liczbowa zaczyna si� od opcjonalnego
     znaku, po kt�rym znajduje si� jedna, lub kilka cyfr (opcjonalnie
     zawieraj�ce przecinek dziesi�tny), po kt�rym opcjonalnie znajduje si�
     eksponent. Eksponent jest to znak "e" lub "E", po kt�rym nast�puje jedna,
     lub wi�cej cyfr.
    </para>
    <simpara>
     Kiedy pierwszym wyra�eniem jest �a�cuch znak�w, typ zmiennej b�dzie zale�a�
     od drugiego wyra�enia.
    </simpara>
    <informalexample>
     <programlisting role="php">
<![CDATA[
$foo = 1 + "10.5";              // $foo jest typu float (11.5)
$foo = 1 + "-1.3e3";            // $foo jest typu float (-1299)
$foo = 1 + "bob-1.3e3";         // $foo jest typu integer (1)
$foo = 1 + "bob3";              // $foo jest typu integer (1)
$foo = 1 + "10 ma�ych �winek";    // $foo jest typu integer (11)
$foo = 1 + "10 malutkich �winek"; // $foo jest typu integer (11)
$foo = "10.0 �winek " + 1;        // $foo jest typu integer (11)
$foo = "10.0 �winek " + 1.0;      // $foo jest typu float (11)     
]]>
     </programlisting>
    </informalexample>
    <simpara>
     Wi�cej informacji na temat tej konwersji znajduje si� w podr�czniku Uniksa,
     na stronie polecenia strtod(3).
    </simpara>
    <para>
     Je�li chcia�by� przetestowa� kt�ry� z przyk�ad�w w tym rozdziale, mo�esz
     je skopiowa� i wklei�, a nast�pnie doda� poni�sz� lini� i obserwowa�
     rezultaty.
     <informalexample>
      <programlisting role="php">
<![CDATA[
echo "\$foo==$foo; jest typu " . gettype ($foo) . "<br>\n";
]]>
      </programlisting>
     </informalexample>
    </para>

   </sect2>
  </sect1><!-- end string -->

  <sect1 id="language.types.array">
   <title>Tablice (array)</title>

   <para>
    Tablica w PHP jest obecnie uporz�dkowan� map�. Mapa jest typem, kt�ry
    przyporz�dkowuje <emphasis>warto�ci</emphasis> do
    <emphasis>kluczy</emphasis>. Typ ten jest optymalizowany na wiele sposob�w,
    wi�c mo�na go u�ywa� jako typow� tablic�, albo list� (wektorow�),
    tablic� asocjacyjn� (kt�ra jest jedn� z implementacji mapy), s�ownik,
    kolekcj�, stos, kolejk�, i temu podobne. Poniewa� warto�ci� tablicy mo�e
    by� inna tablica PHP, mo�na tak�e �atwo symulowa� drzewa.
   </para>
   <para>
    Wyjasnienie wspomnianych struktur wykracza poza problematyk� tego
    podr�cznika,
    aczkolwiek poni�ej uwzgl�dniono conajmniej jeden przyk�ad na ka�d� z nich.
    G��biej zainteresowanych czytelnik�w odsy�amy do odpowiedniej literatury
    informatycznej. 
    <!-- like goodrich&tamassia: datastructures and algorithmes.
    Only, the subtitle is: in Java, and it's quite academic too -->
   </para>
   
   <sect2 id="language.types.array.syntax">
    <title>Sk�adnia</title>
    
    <sect3 id="language.types.array.syntax.array-func">
     <title>Tworzenie za pomoc� <function>array</function></title>
     <para>
      Tablic� mo�na utworzy� za pomoc� konstrukcji j�zykowej
      <function>array</function>. Argumentem tej konstrukcji s� rozdzielone
      przecinkiem pary 
      <literal><replaceable>klucz</replaceable> =&gt; <replaceable
      >warto��</replaceable></literal>.
     </para>
     <para>
      <varname>klucz</varname> mo�e by� albo nieujemn� liczb� ca�kowit�,  
      <!-- 
      
      Negative integers are also allowed, however, IMO it's best to not 
      document that, or even disencourage it. 
      
      Why?
      
      First, because it is very tricky. But the real reason is that the key
      '-1' will be interpreted as a string, and not as a integer. Therefore,
      the usage
      
      "the -1'st value of \$arr is $arr[-1]" is ambigious. By the way,
      it results in a parse-error anyway, which is another argument for
      not documenting it.
      
      -Jeroen
      
      -->
      albo �a�cuchem znak�w.
      Je�li klucz jest standardow� reprezentacj� nieujemnej liczby ca�kowitej,
      zostanie zinterpretowany tak, jak jest (tzn. <literal>'8'</literal> 
      b�dzie zinterpretowane jako <literal>8</literal>, podczas gdy
      <literal>'08'</literal> b�dzie zinterpretowane jako
      <literal>'08'</literal>).
     </para>
     <para>
      Warto�ci� mo�e by� cokolwiek.
     </para>
     <para>
      Je�li pominiesz klucz, to jako klucz zostanie u�yty najwy�szy indeks
      ca�kowity + 1. Je�li nie ma w og�le indeksu ca�kowitego, to klucz b�dzie
      mia� warto�� <literal>0</literal> (zero). Je�li u�yjesz klucza, do kt�rego
      ju� wcze�niej zosta�a przypisana warto��, warto�� ta zostanie nadpisana.
     </para>
     
     <para>
      <synopsis>
array( <optional> <replaceable>klucz</replaceable> =&gt; </optional>
<replaceable>warto��</replaceable>
     , ...
     )
// <replaceable>klucz</replaceable> jest albo �a�cuchem znak�w, albo nieujemn�
                                    liczb� ca�kowit�
// <replaceable>warto��</replaceable> mo�e by� dowolna
      </synopsis>
     </para>
    </sect3>
    
    <sect3 id="language.types.array.syntax.modifying">
     <title>Tworzenie i edytowanie sk�adni� nawias�w kwadratowych</title>
     <para>
      Mo�na zmienia� istniej�c� tablic� jawnie ustawiaj�c warto�ci.
     </para>
     <para>
      Robi si� to przez przypisanie warto�ci do tablicy z podaniem klucza w
      nawiasach kwadratowych. Mo�na tak�e pomin�� klucz i u�y� pustej pary
      nawias�w ("<literal>[]</literal>").
      <synopsis>
$arr[<replaceable>klucz</replaceable>] = <replaceable>warto��</replaceable>;
$arr[] = <replaceable>warto��</replaceable>;
// <replaceable>klucz</replaceable> jest albo �a�cuchem znak�w, albo nieujemn�
                                    liczb� ca�kowit�
// <replaceable>warto��</replaceable> mo�e by� dowolna
      </synopsis>
      Je�li tablica <varname>$arr</varname> nie istnieje, zostanie stworzona.
      Jest to wi�c metoda na tworzenie tablic. Aby zmieni� warto�� konkretnego
      klucza, po prostu przypisz now� warto�� do niego. Aby usun�� par�
      klucz/warto��, trzeba u�y� funkcji <function>unset</function>.
      
     </para>

    </sect3>
    

   </sect2><!-- end syntax -->
   
   <sect2 id="language.types.array.useful-funcs">
    <title>Przydatne funkcje</title>
    <para>
     Jest wiele przydatnych funkcji obs�ugi tablic, o czym wi�cej w rozdziale
     <link linkend="ref.array">Tablice</link>.
    </para>
    <note>
     <para>
      Funkcja <function>unset</function> pozwala kasowa� kom�rki tablicy.
      W takiej sytuacji jednak tablica NIE zostanie zreindeksowana.
      <informalexample>
       <programlisting role="php">
<![CDATA[
$a = array( 1 => 'jeden', 2 => 'dwa', 3 => 'trzy' );
unset( $a[2] );
/* to tak, jakby utworzy� tablic�:
   $a = array( 1 => 'jeden', 3 => 'trzy');
   ale NIE:
   $a = array( 1 => 'jeden', 2 => 'trzy');
*/   
]]>
      </programlisting>
     </informalexample>
     
     </para>    
    </note> 
    <para>
     Struktura kontrolna 
     <link linkend="control-structures.foreach">foreach</link> zosta�a stworzona
     specjalnie dla potrzeb tablic. Dzi�ki niej mo�na �atwo trawersowa� tablic�.
    </para>
    
    
   </sect2>
   
   <sect2 id="language.types.array.donts">
    <title>Co wolno, a czego nie w tablicach?</title>

    <sect3 id="language.types.array.foo-bar">
     <title>Dlaczego zapis
     <literal>$foo[bar]</literal> jest niepoprawny?</title>
     <para>
      W starych skryptach mo�na spotka� tak� sk�adni�:
      <informalexample>
       <programlisting role="php">
<![CDATA[
$foo[bar] = 'co�';
echo $foo[bar];
// itd.
]]>
       </programlisting>
      </informalexample>
      Ten zapis jest niepoprawny, ale dzia�a. Dlaczego zatem jest niepoprawny?
      Pow�d jest to, co opisano w rozdziale <link
      linkend="language.types.array.syntax">sk�adnia</link>, �e pomi�dzy
      nawiasami kwadratowymi ('<literal>[</literal>' i '<literal>]</literal>')
      musi znajdowa� si� wyra�enie. Oznacza to, �e mo�na u�ywa� czego� takiego:
      <informalexample>
       <programlisting role="php">
<![CDATA[
echo $arr[ foo(true) ];        
]]>
       </programlisting>
      </informalexample>
      Jest to przyk�ad u�ycia warto�ci zwracanej przez funkcj� jako indeksu
      tablicy. PHP zna te� sta�e, wi�c mo�na spotka� zastosowanie      
      <literal>E_*</literal>.      

      <informalexample>
       <programlisting role="php">
<![CDATA[
$opis_b��du[E_ERROR] = "Wyst�pi� powa�ny b��d";
$opis_b��du[E_WARNING] = "PHP wys�a�o ostrze�enie";
$opis_b��du[E_NOTICE] = "To jest tylko nieformalna uwaga";
]]>
       </programlisting>
      </informalexample>
      Prosz� pami�ta�, �e <literal>E_ERROR</literal> jest tak�e wa�nym
      identyfikatorem, tak jak <literal>bar</literal> w pierwszym przyk�adzie.
      Ale ostatni przyk�ad znaczy to samo co:
      <informalexample>
       <programlisting role="php">
<![CDATA[
$opis_b��du[1] = "Wyst�pi� powa�ny b��d";
$opis_b��du[2] = "PHP wys�a�o ostrze�enie";
$opis_b��du[8] = "To jest tylko nieformalna uwaga";
]]>
       </programlisting>
      </informalexample>
      poniewa� <literal>E_ERROR</literal> znaczy to samo co
      <literal>1</literal>, itd.
     </para>
     <para>
      W takiem razie, jak to mo�liwe, �e <literal>$foo[bar]</literal> dzia�a?
      To dzia�a, poniewa� <literal>bar</literal>, zgodnie z jego zapisem
      powinien by� sta��. Jednak�e w tym przypadku nie instnieje sta�a o nazwie
      <literal>bar</literal>. PHP teraz zak�ada, �e masz na my�li
      <literal>bar</literal> literalnie, czyli jako �a�ucuch
      <literal>"bar"</literal>, tylko �e zapomnia�e� napisa� cudzys�ow�w.
     </para>
     <sect4>
      <title>Wi�c dlaczego tak jest �le?</title>
      <para>
       Kiedy� w przysz�o�ci grupa PHP mo�e chcie� doda� jeszcze jedn� sta�� lub
       s�owo kluczowe i wtedy b�dziesz mia� k�opot. Dla przyk�adu, obecnie
       ju� nie mo�na u�ywa� s��w <literal>empty</literal> i
       <literal>default</literal>, gdy� s� to specjalne s�owa kluczowe.
       <!-- <jeroen>hmm... i'm doubting this myself. Finish it if you like</jeroen>
       But probably 
       the most threatening
       thing is yourself, or whoever will maintain the script. You'll 
       maybe get very strange behaviour, and 
       -->
      </para>
      <para>
       Poza tym, je�li dot�d argumenty nie przekonuj� ci�: ta sk�adnia jest
       po prostu odrzucona i kiedy� mo�e przesta� dzia�a�.
      </para>
      <note>
       <simpara>
        Po prze��czeniu <link linkend="function.error-reporting"
        >error_reporting</link> na <literal>E_ALL</literal>, zobaczysz, �e
        PHP generuje ostrze�enie, kiedy tylko powy�sza sk�adnia zostanie
        u�yta. Tak samo generowane b�d� ostrze�enia odno�nie innych odrzuconych
        "udogodnie�". (umie�� w swoim skrypcie lini� 
        <literal>error_reporting(E_ALL);</literal>)
       </simpara>
      </note>
      <note>
       <simpara>
        Sk�adnia ta jest dozwolona wewn�trz �a�cucha znak�w w podw�jnych
        cudzys�owach. Wi�cej szczeg��w na ten temat w rozdziale
        <link linkend="language.types.string.parsing"
        >parsowanie zmiennych</link>.
       </simpara>
      </note>
     </sect4>
    </sect3>
   </sect2>

   <sect2 id="language.types.array.examples">
    <title>Przyk�ady</title>
    <para>
     Typ tablicowy w PHP jest bardzo r�norodny, co prezentuj� poni�sze
     przyk�ady.
    </para>
    <para>
      <informalexample>
       <programlisting role="php">
<![CDATA[
// to:
$a = array( 'kolor' => 'czerowny'
          , 'smak' => 's�odki'
          , 'kszta�t' => 'okr�g�y'
          , 'nazwa'  => 'jab�ko'
          ,            4        // kluczem b�dzie 0
          );

// znaczy dok�adnie to samo, co to:
$a['kolor'] = 'czerwony';
$a['smak'] = 's�odki';
$a['kszta�t'] = 'okr�g�y';
$a['nazwa'] = 'jab�ko';
$a[]        = 4;        // kluczem b�dzie 0

$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// znaczy to samo co: array( 0 => 'a' , 1 => 'b' , 2 => 'c' ),
// albo pro�ciej: array('a', 'b', 'c')
]]>
       </programlisting>
      </informalexample>
     </para>
    
    <example>
     <title>U�ycie array()</title>
     <programlisting role="php">
<![CDATA[
// tablica jako mapa w�a�ciwo�ci
$mapa = array( 'version'    => 4
            , 'OS'         => 'Linux'
            , 'lang'       => 'polski'
            , 'short_tags' => true
            );
            
// tylko klucze liczbowe
$array = array( 7
              , 8
              , 0
              , 156
              , -10
              );
// znaczy to samo co array( 0 => 7, 1 => 8, ...)

$zmiany = array(            10 // klucz = 0
                  , 5    =>  6
                  , 3    =>  7 
                  , 'a'  =>  4
                  ,         11 // klucz = 6 (najwy�szy indeks ca�kowity by� 5)
                  , '8'  =>  2 // klucz = 8 (ca�kowity!)
                  , '02' => 77 // klucz = '02'
                  , 0    => 12 // warto�� 10 b�dzie nadpisana przez 12
                  );
                  
// pusta tablica
$pusta = array();         
]]>
<!-- TODO example of
- mixed keys
- overwriting keys
- integer keys as string
- using vars/functions as key/values
- mixed skipping
-->
     </programlisting>
    </example>

    <example id="language.types.array.examples.loop">
     <title>Kolekcja</title>
     <programlisting role="php">
<![CDATA[
$kolory = array('czerwony','niebieski','zielony','��ty');

foreach ( $kolory as $kolor ) {
    echo "Czy lubisz $kolor?\n";
}

/* wynik:
Czy lubisz czerwony?
Czy lubisz niebieski?
Czy lubisz zielony?
Czy lubisz ��ty?
*/
]]>
     </programlisting>
    </example>
    
    <para>
     Obecnie nie jest mo�liwa zmiana warto�ci w tabeli przy u�yciu takiej p�tli. 
      <!--
       Should be made possible, if you write:
       foreach ( $colors as &$color )
      
       See bug#3074
      -->
     Mo�na to jednak rozwi�za� tak: 
     <example id="language.types.array.examples.changeloop">
      <title>Collection</title>
      <programlisting role="php">
<![CDATA[
foreach ($kolory as $klucz => $kolor) {
    // nie dzia�a:
    //$kolor = strtoupper($kolor);
    
    // dzia�a:
    $kolory[$klucz] = strtoupper($kolor);
}
print_r($kolory);

/* wynik:
Array
(
    [0] => CZERWONY
    [1] => NIEBIESKI
    [2] => ZIELONY
    [3] => �ӣTY
)
*/
]]>
      </programlisting>
     </example>
    </para>
    <para>
     Poni�szy przyk�ad tworzy tablic� z pierwszym kluczem 1.
     <example>
      <title>Pierwszy klucz 1</title>
      <programlisting role="php">
<![CDATA[
$kwarta�  = array(1 => 'Stycze�', 'Luty', 'Marzec');
print_r($kwarta�);

/* wynik:
Array 
(
    [1] => 'Stycze�'
    [2] => 'Luty'
    [3] => 'Marzec'
)
*/
]]>   
      </programlisting>
     </example>
    </para>
    <example>
     <title>Wype�nianie prawdziwej tablicy</title>
     <programlisting role="php">
<![CDATA[
// wype�nij tablic� zawarto�ci� folderu
$uchwyt = opendir('.');
while ($plik = readdir($uchwyt)) 
{
    $pliki[] = $plik;
}
closedir($uchwyt); 
]]>
     </programlisting>
    </example>
    <para>
     Dane w tablicach s� uporz�dkowane. Ich kolejno�� mo�e by� zmieniona za
     pomoc� r�norodnych funkcji sortuj�cych. Wi�cej na ten temat w rozdziale
     <link linkend="ref.array">tablice</link>.
    </para>
    <example>
     <title>Sortowanie tablic</title>
     <programlisting role="php">
<![CDATA[
sort($pliki);
print_r($pliki);
]]>
     </programlisting>
    </example>
    <para>
     Poniewa� warto�ci� tablicy mo�e by� wszystko, mo�e te� ni� by� inna
     tablica. Mo�na w ten spos�b tworzy� tablice rekursywne i wielowymiarowe.
    </para>
    <example>
     <title>Tablice rekursywne i wielowymiarowe</title>
     <programlisting role="php">
<![CDATA[
$owoce = array ( "owoce"  => array (   "a" => "pomara�cza"
                                     , "b" => "banan"
                                     , "c" => "jab�ko"
                                     )
                , "liczby" => array ( 1
                                     , 2
                                     , 3
                                     , 4
                                     , 5
                                     , 6
                                     )
                , "dziury"   => array (      "pierwsza"
                                     , 5 => "druga"
                                     ,      "trzecia"
                                     )
                );
]]>
<!-- quite duplicate...
$a = array(
     "apple"  => array(
          "color"  => "red",
          "taste"  => "sweet",
          "shape"  => "round"
     ),
     "orange"  => array(
          "color"  => "orange",
          "taste"  => "tart",
          "shape"  => "round"
     ),
     "banana"  => array(
          "color"  => "yellow",
          "taste"  => "paste-y",
          "shape"  => "banana-shaped"
     )
);
-->
     </programlisting>
    </example>

   </sect2>
   
   <!-- TODO
   <sect2>
    <title>Misc</title>
   
   </sect2>
   
   - example multi-dim with $arr[bla][bla] syntax
   - converting to array
   - warning about references
   - note that assigning is copy (usually...)
   
   
   -->  

<!-- there is no such thing as multi/singel dim arrays (at least in PHP4) 
   <sect2 id="language.types.array.single-dim">
    <title>Single Dimension Arrays</title>

    <para>
     PHP supports both scalar and associative arrays. In fact, there
     is no difference between the two.  You can create an array using
     the 
     
     <function>list</function> 
     
     Nope
     
     
     
     
     or <function>array</function>
     functions, or you can explicitly set each array element value.
     <informalexample>
      <programlisting role="php"> 
$a[0] = "abc"; 
$a[1] = "def"; 
$b["foo"] = 13;
      </programlisting>
     </informalexample>
    </para>
    <para>
     You can also create an array by simply adding values to the
     array. When you assign a value to an array variable using empty
     brackets, the value will be added onto the end of the array.
     <informalexample>
      <programlisting role="php"> 
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world" 
      </programlisting>
     </informalexample>
    </para>
    <para>
     Arrays may be sorted using the <function>asort</function>,
     <function>arsort</function>, <function>ksort</function>,
     <function>rsort</function>, <function>sort</function>,
     <function>uasort</function>, <function>usort</function>, and
     <function>uksort</function> functions depending on the type of
     sort you want.
    </para>
    <para>
     You can count the number of items in an array using the
     <function>count</function> function.
    </para>
    <para>
     You can traverse an array using <function>next</function> and
     <function>prev</function> functions.  Another common way to
     traverse an array is to use the <function>each</function>
     function.
    </para>
   </sect2>

   <sect2 id="language.types.array.multi-dim">
    <title>Multi-Dimensional Arrays</title>

    <para>
     Multi-dimensional arrays are actually pretty simple.  For each
     dimension of the array, you add another [key] value to the end:
     <informalexample>
      <programlisting role="php"> 
$a[1]      = $f;               # one dimensional examples
$a["foo"]  = $f;   

$a[1][0]     = $f;             # two dimensional
$a["foo"][2] = $f;             # (you can mix numeric and associative indices)
$a[3]["bar"] = $f;             # (you can mix numeric and associative indices)

$a["foo"][4]["bar"][0] = $f;   # four dimensional!
      </programlisting>
     </informalexample>
    </para>
    <para>
     In PHP 3 it is not possible to reference multidimensional arrays
     directly within strings. For instance, the following will not
     have the desired result:
     <informalexample>
      <programlisting role="php"> 
$a[3]['bar'] = 'Bob';
echo "This won't work: $a[3][bar]";
      </programlisting>
     </informalexample>
     In PHP 3, the above will output <computeroutput>This won't work:
     Array[bar]</computeroutput>. The string concatenation operator,
     however, can be used to overcome this:
     <informalexample>
      <programlisting role="php">
$a[3]['bar'] = 'Bob';
echo "This will work: " . $a[3]['bar'];
      </programlisting>
     </informalexample>
    </para>
    <para>
     In PHP 4, however, the whole problem may be circumvented by
     enclosing the array reference (inside the string) in curly
     braces:
     <informalexample>
      <programlisting role="php">
$a[3]['bar'] = 'Bob';
echo "This will work: {$a[3][bar]}";
      </programlisting>
     </informalexample>
    </para>
    <para>
     You can "fill up" multi-dimensional arrays in many ways, but the
     trickiest one to understand is how to use the
     <function>array</function> command for associative arrays.  These
     two snippets of code fill up the one-dimensional array in the
     same way:
     <informalexample>
      <programlisting role="php"> 
# Example 1:

$a["color"]     = "red";
$a["taste"]     = "sweet";
$a["shape"]     = "round";
$a["name"]      = "apple";
$a[3]           = 4;

# Example 2:
$a = array(
     "color" => "red",
     "taste" => "sweet",
     "shape" => "round",
     "name"  => "apple",
     3       => 4
);
      </programlisting>
     </informalexample>
    </para>
    <para>
     The <function>array</function> function can be nested for
     multi-dimensional arrays:
     <informalexample>
      <programlisting role="php"> 
&lt;?php
$a = array(
     "apple"  => array(
          "color"  => "red",
          "taste"  => "sweet",
          "shape"  => "round"
     ),
     "orange"  => array(
          "color"  => "orange",
          "taste"  => "tart",
          "shape"  => "round"
     ),
     "banana"  => array(
          "color"  => "yellow",
          "taste"  => "paste-y",
          "shape"  => "banana-shaped"
     )
);

echo $a["apple"]["taste"];    # will output "sweet"
?>
      </programlisting>
     </informalexample>
    </para>

   </sect2>
   
   -->
  </sect1>

  <sect1 id="language.types.object">
   <title>Obiekty (object)</title>

   <sect2 id="language.types.object.init">
    <title>Inicjowanie obiekt�w</title>

    <para>
     Aby zainicjowa� obiekt, nale�y u�y� s�owa kluczowego <literal>new</literal>
     aby przypisa� instancj� obiektu do zmiennej.

     <informalexample>
      <programlisting role="php">
<![CDATA[
<?php
class foo
{
    function do_foo()
    {
        echo "Doing foo."; 
    }
}

$bar = new foo;
$bar->do_foo();
?>
]]>
      </programlisting>
     </informalexample>
    </para>
    <simpara>
     Pe�na informacja na ten temat znajduje si� w rozdziale <link
     linkend="language.oop">Klasy i Obiekty</link>.
    </simpara>

   </sect2>
  </sect1>

  <sect1 id="language.types.resource">
   <title>Identyfikator zasob�w (resource)</title>
    
    <para>
     Identyfikator zasob�w jest specjaln� zmienn�, przechowywuj�c� odno�nik
     do zewn�trznego �r�d�a zasob�w. Identyfikatory zasob�w s� tworzone
     i wykorzystywane przez specjalne funkcje. Zobacz
     <link linkend="resource">suplement</link> z list� tych funkcji i
     powi�zanych z tym typ�w zasob�w.     
    </para>
    
    <note>
     <simpara>
      Identyfikator zasob�w zosta� wprowadzony w PHP 4.
     </simpara>
    </note>

    <sect2 id="language.types.resource.self-destruct">
     <title>Zwalnianie zasob�w</title>
    
    <para>
     Dzi�ki systemowi kontroli zasob�w, wprowadzonemu w opracowanym przez Zend
     silniku skryptowym PHP 4, automatycznie wykrywana jest sytuacja, kiedy
     nie ma ju� odno�nik�w do zasobu (tak jak w Java). W takie sytuacji zasoby
     systemowe u�ywane do tego zasobu zostaj� zwolnione przez destruktor
     zasob�w. Dlatego nie jest
     konieczne, aby zwalnia� pami�� r�cznie za pomoc� funkcji typu free_result.
     <note>
      <simpara>
       Wyj�tkiem s� tu sta�e po��czenia z serwerami baz danych, kt�re
       <emphasis>nie</emphasis> s�
       niszczone przez destruktor zasob�w. Zobacz te� <link 
       linkend="features.persistent-connections">sta�e po��czenia</link>.
      </simpara>
     </note>
    </para>
    
   </sect2>
  </sect1>
    
  <sect1 id="language.types.null">
   <title>Typ NULL (null)</title>
    
   <para>
    Specjalna warto�� &null; oznacza, �e zmienna nie przechowuje �adnej
    warto�ci. &null; jest jedyn� mo�liw� warto�ci� typu <type>NULL</type>.
   </para>
    <note>
     <simpara>
      Typ <type>NULL</type> zosta� wprowadzony w PHP 4.
     </simpara>
    </note>
    
   <sect2 id="language.types.null.syntax">
    <title>Sk�adnia</title>
    <para>
     Jest tylko jedna warto��, jak� mo�e mie� typ &null; i jest ni� s�owo
     kluczowe &null;. Wielko�� liter s�owa &null; nie gra roli.
     <informalexample>
      <programlisting role="php">
$var = NULL;       
      </programlisting>
     </informalexample>
    </para>
   </sect2>
  
  </sect1>

  <sect1 id="language.types.type-juggling">
   <title>Wykorzystywanie typ�w danych</title>

   <simpara>
    PHP nie wymaga (a nawet nie obs�uguje) jawnej deklaracji typ�w zmiennych.
    Typ zmiennej jest okre�lany na podstawie kontekstu, w jakim ta zmienna jest
    u�ywana. Oznacza to m.in., �e przy przypisaniu �a�cucha znak�w do zmiennej
    <parameter>var</parameter>, zmienna ta zmienia sw�j typ na string. Je�li
    potem zostanie przypisana warto�� ca�kowita, <parameter>var</parameter>
    zmienia sw�j typ na integer.
   </simpara>
   <para>
    Przyk�adem automatyczniej konwersji typ�w jest operator dodawania '+'.
    Je�li kt�rykolwiek z operand�w jest typu float, to wszystkie operandy
    zostan� potraktowane jako liczby float i taki te� typ b�dzie zwr�cony jako
    wynik dodawania. W przeciwnym razie operandy zostan� potraktowane jako
    liczby ca�kowite i wynikiem tak�e b�dzie liczba ca�kowita. Prosz� jednak
    zwr�ci� uwag�, �e dzia�anie to NIE zmienia typ�w samych operand�w; zmienia
    jedynie spos�b ich interpretacji przez operator dodawania.
    <informalexample>
     <programlisting role="php">
$foo = "0";  // $foo jest �a�cuchem znak�w (ASCII 48)
<!-- bad example, no real operator (must be used with variable, modifies it too)
$foo++;      // $foo is the string "1" (ASCII 49)
-->
$foo += 2;   // $foo jest liczb� ca�kowit� (2)
$foo = $foo + 1.3;  // $foo jest liczb� zmiennoprzecinkow� (3.3)
$foo = 5 + "10 Ma�ych �winek"; // $foo jest liczb� ca�kowit� (15)
$foo = 5 + "10 Wi�kszych �winek";     // $foo jest liczb� ca�kowit� (15)
<!--

TODO: explain ++/- - behaviour with strings

examples:

++'001' = '002'
++'abc' = 'abd'
++'xyz' = 'xza'
++'9.9' = '9.0'
++'-3'  = '-4'
- -'9'   = 8 (integer!)
- -'5.5' = '5.5'
- -'-9'  = -10 (integer)
- -'09'  = 8 (integer)
- -'abc' = 'abc'

-->
     </programlisting>
    </informalexample>
   </para>
   <simpara>
    Je�li dwa ostanie przyk�ady wydaj� si� tobie dziwne, zajrzyj do rozdzia�u
    <link linkend="language.types.string.conversion">Konwersja �a�cuch�w
    znak�w</link>.
   </simpara>
   <simpara>
    Je�li chcesz skonwertowa� zmienn� z jednego typu do innego, u�yj
    <link linkend="language.types.typecasting">rzutowania typ�w</link>. Aby
    zmieni� typ zmiennej, u�yj <function>settype</function>.
   </simpara>
   <para>
    Je�li chcesz przetestowa� kt�rykolwiek z przyk�ad�w z tego rozdzia�u, mo�esz
    u�y� funkcji <function>var_dump</function>.
   </para>
   <note>
    <para>
     Efekty automatycznej konwersji do tablicy s� aktualnie nieokre�lone.
     <informalexample>
      <programlisting role="php">
$a = 1;       // $a jest liczb� ca�kowit�
$a[0] = "f";  // $a staje si� tablic�, $a[0] zawiera "f"
      </programlisting>
     </informalexample>
    </para>
    <para>
     W powy�szym przyk�adzie wydawa� si� mo�e oczywiste, �e $a stanie si�
     tablic� z pierwszym elementem "f"; rozwa� jednak poni�szy przyk�ad:
     <informalexample>
      <programlisting role="php">
$a = "1";     // $a jest �a�cuchem znak�w
$a[0] = "f";  // Co z ofsetami �a�cuch�w? Co si� dzieje?
      </programlisting>
     </informalexample>
    </para>
    <para>
     Poniewa� PHP obs�uguje indeksowanie �a�cuch�w za pomoc� ofset�w, u�ywaj�c
     tej samej sk�adni co indeksowanie tablic, powy�szy przyk�ad powoduje
     problem: czy $a powinno zosta� tablic� z pierwszym elementem o warto�ci
     "f", czy raczej "f" powinno zosta� pierwszym znakiem �a�cucha $a?
    </para>
    <para>
     Z tego w�a�nie powodu, od PHP 3.0.12 i PHP 4.0b3-RC4, efekt automatycznej
     konwersji pozostaje nieokre�lony. Dyskusje odno�nie tego problemu trwaj�.
    </para>
   </note>

   <sect2 id="language.types.typecasting">
    <title>Rzutowanie typ�w</title>

    <para>
     Rzutowanie typ�w w PHP dzia�a mniej wi�cej tak jak w j�zyku C: nazwa
     docelowego typu umieszczana jest w nawiasach przed nazw� zmiennej, kt�ra
     ma by� zrzutowana.
     <informalexample>
      <programlisting role="php">
$foo = 10;   // $foo jest liczb� ca�kowit�
$bar = (float) $foo;   // $bar jest typu float (zmiennoprzecinkowego)
      </programlisting>
     </informalexample>
    </para>
    <para>
     Operatory rzutowania s� nast�puj�ce:
     <itemizedlist>
      <listitem>
       <simpara>(int), (integer) - rzutowanie do liczb ca�kowitych</simpara>
      </listitem>
      <listitem>
       <simpara>(bool), (boolean) - rzutowanie do typu boolowskiego</simpara>
      </listitem>
      <listitem>
       <simpara>(float), (double), (real) - rzutowanie do liczb
       zmiennoprzecinkowych</simpara>
      </listitem>
      <listitem>
       <simpara>(string) - rzutowanie do �a�cucha znak�w</simpara>
      </listitem>
      <listitem>
       <simpara>(array) - rzutowanie do tablicy</simpara>
      </listitem>
      <listitem>
       <simpara>(object) - rzutowanie do obiektu</simpara>
      </listitem>
     </itemizedlist>
    </para>
    <note>
     <simpara>
      Zamiast rzutowa� zmienn� do �a�cucha znak�w operatorem, mo�na te� umie�ci�
      zmienn� w cudzys�owie podw�jnym. 
      <!-- TODO: example -->
     </simpara>
    </note>
     
    <para>
     Wewn�trz nawias�w operatora rzutowania mog� znajdowa� si� tabulacje i
     spacje, wi�c poni�sze przyk�ady s� funkcjonalnie identyczne:
     <informalexample>
      <programlisting role="php">
$foo = (int) $bar;
$foo = ( int ) $bar;
      </programlisting>
     </informalexample>
    </para>
    <para>
     Efekt rzutowania pomi�dzy niekt�rymi typami nie zawsze daje spodziewany
     wynik. Wi�cej informacji o skutkach rzutowania w rozdzia�ach:
    
     <itemizedlist>
      <listitem>
       <simpara><link linkend="language.types.boolean.casting">Konwersja
       do typu boolowskiego</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.integer.casting">Konwersja do
       liczb ca�kowitych</link></simpara>
      </listitem>
      <!-- don't exist yet
      <listitem>
       <simpara><link linkend="language.types.float.casting">Converting to 
        float</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.string.casting">Converting to 
        string</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.array.casting">Converting to 
        array</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.object.casting">Converting to 
        object</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.resource.casting">Converting to 
        resource</link></simpara>
      </listitem>
      <listitem>
       <simpara><link linkend="language.types.null.casting">Converting to 
        &null;</link></simpara>
      </listitem>
      -->
     </itemizedlist>
    
    </para>
    <para>
     <!-- TODO: move to 'converting to string' -->
     Przy rzutowaniu lub wymuszeniu konwersji z tablicy do �a�cucha znak�w,
     rezultatem b�dzie s�owo <literal>Array</literal>. Przy rzutowaniu lub
     wymuszeniu konwersji z obiektu do �a�cucha znak�w, rezultatem b�dzie
     s�owo <literal>Object</literal>. 
     
     <!-- not with my PHP, not even a notice... maybe in PHP3? 
     Does someone know? 
     
     In both cases a warning will
     be issued. -->
    </para>
    <para>
     Przy rzutowaniu ze zmiennej skalarnej lub �a�cucha do tablicy, warto��
     zmiennej stanie si� pierwszym elementem tablicy:
     <informalexample>
      <programlisting role="php">
$var = 'ciao';
$arr = (array) $var;
echo $arr[0];  // wynik: 'ciao'  
      </programlisting>
     </informalexample>
    </para>
    <para>
     Przy rzutowaniu ze zmiennej skalarnej lub �a�cucha do obiektu, warto��
     zmiennej stanie si� w�a�ciwo�ci� obiektu; w�a�ciwo�� ta b�dzie nazywa�
     si� 'scalar':
     <informalexample>
      <programlisting role="php">
$var = 'ciao';
$obj = (object) $var;
echo $obj-&gt;scalar;  // wynik: 'ciao'
      </programlisting>
     </informalexample>
    </para>

   </sect2>
  </sect1>

 </chapter>
 
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

Reply via email to