leszek          Thu Nov  8 19:02:31 2001 EDT

  Added files:                 
    /phpdoc/pl/language operators.xml 
  Log:
  Operators.xml done. At last!
  

Index: phpdoc/pl/language/operators.xml
+++ phpdoc/pl/language/operators.xml
<?xml encoding="iso-8859-2"?>
<!-- $Revision: 1.1 $ -->
 <chapter id="language.operators">
  <title>Operatory</title>
  <simpara>
  </simpara>
  
  <sect1 id="language.operators.arithmetic">
   <title>Operatory Arytmetyczne</title>
   <simpara>
    Czy pami�tasz podstawy arytmetyki ze szko�y? W PHP operatory dzia�aj�
    niemal�e tak samo.
   </simpara>
   <table>
    <title>Operatory Arytmetyczne</title>
    <tgroup cols="3">
     <thead>
      <row>
       <entry>Przyk�ad</entry>
       <entry>Nazwa</entry>
       <entry>Opis</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>$a + $b</entry>
       <entry>Dodawanie</entry>
       <entry>Suma $a i $b.</entry>
      </row>
      <row>
       <entry>$a - $b</entry>
       <entry>Odejmowanie</entry>
       <entry>R�nica $a od $b.</entry>
      </row>
      <row>
       <entry>$a * $b</entry>
       <entry>Mno�enie</entry>
       <entry>Iloczyn $a i $b.</entry>
      </row>
      <row>
       <entry>$a / $b</entry>
       <entry>Dzielenie</entry>
       <entry>Iloraz $a przez $b.</entry>
      </row>
      <row>
       <entry>$a % $b</entry>
       <entry>Modulo</entry>
       <entry>Reszta z dzielenia $a przez $b.</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
   
   <simpara>
    Operator dzielenia ("/") zwraca warto�� ca�kowit� (wynikiem dzielenia jest
    liczba ca�kowita) je�li obydwa operandy s� ca�kowite (lub s� �a�cuchami 
    znak�w skonwertowanymi do liczba ca�kowitych) i wynik ich dzielenia jest 
    ca�kowity. Je�li jednak kt�ry� z operand�w jest zmiennoprzecinkowy lub 
    wynikiem dzielenia jest liczba nieca�kowita, operator dzielenia zwraca 
    warto�� zmiennoprzecinkow�.
   </simpara>
  </sect1>
  
  <sect1 id="language.operators.assignment">
   <title>Operatory Przypisania</title>
   <simpara>
    Podstawowym operatorem przypisania jest "=". Twoim pierwszym skojarzeniem 
    mo�e by� "jest r�wny". Nie! Tak naprawd� oznacza to, �e operand z lewej
    strony operatora "=" otrzymuje warto�� wyra�enia stoj�cego po prawej stronie
    (tak w�a�nie si� t�umaczy: "otrzymuje warto�� wyra�enia po prawej").
   </simpara>
   <para>
    Warto�ci� ca�ego wyra�enia przypisania jest warto�� przypisywana do 
    zmiennej stojacej po lewej. Na przyk�ad warto�ci� "$a = 3" jest 3. To 
    pozwala na wykonywanie bardziej skomplikowanych przypisa�: 
    <informalexample>
     <programlisting role="php"> 
$a = ($b = 4) + 5; // teraz $a jest r�wne 9, a $b jest r�wne 4.
     </programlisting>
    </informalexample>
   </para>
   <para>
    Poza podstawowym operatorem przypisania, istniej� jeszcze z�o�one operatory 
    odnosz�ce si� do wszystkich arytmetycznych i �a�cuchowych operator�w. 
    Pozwalaj� one u�y� jednej zmiennej jako jednego z operand�w, a nast�pnie 
    zapisana� wynik dzia�ania w tej w�a�nie zmiennej. Na przyk�ad:
    <informalexample>
     <programlisting role="php">
$a = 3;
$a += 5; // ustawia warto�� $a na 8, tak jakby napisa�: $a = $a + 5;
$b = "Witaj ";
$b .= "�wiecie!"; // ustawia warto�� $b na "Witaj �wiecie!", dok�adnie tak jak 
$b = $b . "�wiecie!";
     </programlisting>
    </informalexample>
   </para>
   <para>
    Zwr�� uwag�, �e przypisanie kopiuje warto�� oryginalnej zmiennej do nowej
    zmiennej (tzw. przypisanie przez warto��). Skutki tego mog� by� widoczne
    przy kopiowaniu np. du�ej tablicy wewn�trz zwartej (ciasnej) p�tli (ang.
    tight loop). PHP 4 pozwala na przypisanie przez
    referencj� (odniesienie), za pomoc� sk�adni <computeroutput>$zmienna =
    &amp;$innaZmienna;</computeroutput>. Taka mo�liwo�� pojawi�a si� dopiero 
    w PHP 4 i nie by�a dost�pna w PHP 3. "Przypisanie przez referencj�" oznacza,
    �e obydwie zmienne wskazuj� te same warto�ci, natomiast nic si� nie
    kopiuje. Aby dowiedzie� si� wi�cej na temat referencji, przeczytaj rodzia�
    <link linkend="language.references">wyja�nienie referencji</link>.
   </para>
  </sect1>

  <sect1 id="language.operators.bitwise">
   <title>Operatory Bitowe</title>
   <simpara>
    Operatory bitowe s�u�� do operowania na warto�ciach konkretnych bit�w w 
    liczbie.
   </simpara>
   <table>
    <title>Operatory Bitowe</title>
    <tgroup cols="3">
     <thead>
      <row>
       <entry>Przyk�ad</entry>
       <entry>Nazwa</entry>
       <entry>Opis</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>$a &amp; $b</entry>
       <entry>Mno�enie</entry>
       <entry>Dany bit wynikowy jest r�wny 1 tylko je�li obydwa bity sk�adowe 
       s� r�wne 1.</entry>
      </row>
      <row>
       <entry>$a | $b</entry>
       <entry>Sumowanie</entry>
       <entry>Dany bit wynikowy jest r�wny 1 je�li conajmniej jeden bit 
       sk�adowy jest r�wny 1.</entry>
      </row>
      <row>
       <entry>$a ^ $b</entry>
       <entry>Sumowanie modulo 2</entry>
       <entry>Dany bit wynikowy jest r�wny 1 tylko je�li jeden z bit�w 
       sk�adowych jest r�wny 1 a drugi jest r�wny 0.</entry>
      </row>
      <row>
       <entry>~ $a</entry>
       <entry>Negacja</entry>
       <entry>Bity w zmiennej $a maj�ce warto�� 1 otrzymuj� warto�� 0 i na 
       odwr�t.</entry>
      </row>
      <row>
       <entry>$a &lt;&lt; $b</entry>
       <entry>Przesuni�cie w lewo</entry>
       <entry>
        Przesuwa bity w zmiennej $a o $b krok�w w lewo (ka�dy krok znaczy "pomno�one
    przez dwa").
       </entry>
      </row>
      <row>
       <entry>$a &gt;&gt; $b</entry>
       <entry>Przesuni�cie w prawo</entry>
       <entry>
        Przesuwa bity w zmiennej $a o $b krok�w w prawo (ka�dy krok znaczy 
    "podzielone przez dwa").
       </entry>
      </row>
     </tbody>
    </tgroup>
   </table>
  </sect1>

  <sect1 id="language.operators.comparison">
   <title>Operatory Por�wnania</title>
   <simpara>
    Jak wskazuje ich nazwa, operatory te s�u�� do por�wnywania dw�ch warto�ci.
   </simpara>
   <table>
    <title>Operaatory Por�wnania</title>
    <tgroup cols="3">
     <thead>
      <row>
       <entry>Przyk�ad</entry>
       <entry>Nazwa</entry>
       <entry>Opis</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>$a == $b</entry>
       <entry>R�wny</entry>
       <entry>&true; jesli $a jest r�wne $b</entry>
      </row>
      <row>
       <entry>$a === $b</entry>
       <entry>Identyczny</entry>
       <entry>
        &true; je�li $a jest r�wne $b, i obydwa operandy s� tego samego typu.
    (tylko w PHP 4)
       </entry>
      </row>
      <row>
       <entry>$a != $b</entry>
       <entry>R�ny</entry>
       <entry>&true; je�li $a nie jest r�wny $b.</entry>
      </row>
      <row>
       <entry>$a &lt;> $b</entry>
       <entry>R�ny</entry>
       <entry>&true; je�li $a nie jest r�wny $b.</entry>
      </row>
      <row>
       <entry>$a !== $b</entry>
       <entry>Nie identyczny</entry>
       <entry>
        &true; je�li $a nie jest r�wny $b, lub nie s� tego samego typu. 
    (tylko w PHP 4)
       </entry>
      </row>
      <row>
       <entry>$a &lt; $b</entry>
       <entry>Mniejszy ni�</entry>
       <entry>&true; je�li $a jest mniejszy od $b.</entry>
      </row>
      <row>
       <entry>$a &gt; $b</entry>
       <entry>Wi�kszy ni�</entry>
       <entry>&true; je�li $a jest wi�kszy od $b.</entry>
      </row>
      <row>
       <entry>$a &lt;= $b</entry>
       <entry>Mniejszy lub r�wny</entry>
       <entry>&true; je�li $a jest mniejszy lub r�wny $b.</entry>
      </row>
      <row>
       <entry>$a &gt;= $b</entry>
       <entry>Wi�kszy lub r�wny</entry>
       <entry>&true; je�li $a jest wi�kszy lub r�wny $b.</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
   <para>
    Jeszcze jednym operatorem warunkowym jest operator "?:", dzia�aj�cy tak jak
    w C i wielu innych j�zykach.
    <informalexample>
     <programlisting>
(expr1) ? (expr2) : (expr3);
     </programlisting>
    </informalexample> 
    Warto�cia wyra�enia jest <replaceable>expr2</replaceable> je�li
    <replaceable>expr1</replaceable> jest r�wne &true;, lub
    <replaceable>expr3</replaceable> je�li
    <replaceable>expr1</replaceable> jest r�wne &false;.
   </para>
  </sect1>

  <sect1 id="language.operators.errorcontrol">
   <title>Operatory Kontroli B��d�w</title>
   <simpara>
    PHP obs�uguje obecnie jeden operator kontroli b��d�w: znak ma�py (@). Je�li
    znak ten zostanie postawiony przed dowolnym wyra�eniem w PHP, jakiekolwiek 
    powiadomienia o b��dach wygenerowane przez to wyra�enie zostan� pomini�te 
    (nie b�d� wy�wietlone). 
   </simpara>
   <simpara>
    Je�li mechanizm <link linkend="ini.track-errors">track_errors</link>
    zosta� w��czony, jakiekolwiek powiadomienie o b��dzie zostanie zapisane do 
    zmiennej globalnej $php_errormsg. Nale�y jednak pami�ta�, �e zawarto�� tej 
    zmiennej jest nadpisywana przy ka�dym b��dzie, wi�c po wyst�pieniu kolejnego
    b��du w skrypcie, informacja o poprzednim b��dzie jest tracona.
   </simpara>
   <para>
    <informalexample>
     <programlisting role="php">
&lt;?php
/* Zamierzony b��d obs�ugi pliku */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// mechanizm ten dzia�a dla wszystkich wyra�e�, nie tylko dla funkcji:
$value = @$cache[$key]; 
// spowoduje niewy�wietlenie powiadomienia, je�li nie istnieje wpis do tablicy o
indeksie $key.

?&gt;
     </programlisting>
    </informalexample>
   </para>
   <note>
    <simpara>
     Operator @ dzia�a tylko na wyra�eniach. T�umacz�c to �opatologicznie: je�li
     da si� pobra� warto�� czego�, mo�na postawi� operator @ przed tym czym�. 
     Zgodnie z powy�sz� regu��, mo�na postawi� @ przed zmiennymi, wywo�aniami 
     funkcji, instrukcjami <function>include</function>, sta�ymi, itp. Nie mo�na
     stawia� @ przed definicjami funkcji b�d� klasy, lub strukturami
     warunkowymi, takimi jak <literal>if</literal> lub
     <literal>foreach</literal>, itd.
    </simpara>
   </note>
   <simpara>
    Zobacz tak�e <function>error_reporting</function>.
   </simpara>
   <warning>
    <para>
     Obecnie operator kontroli b��d�w "@" wy��czy wy�wietlanie powiadomienia 
     o b��dzie nawet dla b��d�w krytycznych, kt�re przerw� wykonywanie skryptu.
     Oznacza to, �e je�li u�yjesz tego operatora przed wywo�aniem funkcji, kt�ra
     jest nieosi�galna lub ma liter�wk� w nazwie, skrypt przerwie prac� 
     nie powiadamiaj�c dlaczego.
    </para>
   </warning>
  </sect1>
  
  <sect1 id="language.operators.execution">
   <title>Operatory Wykonania Polecenia Systemowego</title>
   <para>
    PHP posiada jeden operator wykoania polecenia systemowego: apostrof wsteczny
    (``). Zauwa� �e jest to co� innego ni� apostrof zwyk�y! Zawarto�� apostrofu
    wstecznego zostanie wykonana jako polecenie systemowe. Wynik polecenia 
    zostanie zwr�cony (tzn. nie b�dzie wys�any do przegl�darki tylko b�dzie 
    dost�pny do przypisania do zmiennej).
    <informalexample>
     <programlisting role="php">
$output = `ls -al`;
echo "&lt;pre&gt;$output&lt;/pre&gt;";
     </programlisting>
    </informalexample>
   </para>
   <note>
    <para>
     Operator ten nie dzia�a kiedy <link
     linkend="ini.safe-mode">safe mode</link> jest w��czony.
    </para>
   </note>
   <para>
    Zobacz te� <function>system</function>,
    <function>passthru</function>, <function>exec</function>,
    <function>popen</function>, and
    <function>escapeshellcmd</function>.
   </para>
  </sect1>

  <sect1 id="language.operators.increment">
   <title>Operatory Inkrementacji i Dekrementacji</title>
   <para>
    PHP obs�uguje te operatory w stylu j�zyka C.
   </para>
   <table>
    <title>Operatory Inkrementacji i Dekrementacji</title>
    <tgroup cols="3">
     <thead>
      <row>
       <entry>Przyk�ad</entry>
       <entry>Nazwa</entry>
       <entry>Opis</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>++$a</entry>
       <entry>Pre-inkrementacja</entry>
       <entry>Najpierw zwi�ksza warto�� $a o jeden, potem zwraca $a.</entry>
      </row>
      <row>
       <entry>$a++</entry>
       <entry>Post-inkrementacja</entry>
       <entry>Najpierw zwraca $a, potem zwi�ksza $a o jeden.</entry>
      </row>
      <row>
       <entry>--$a</entry>
       <entry>Pre-dekrementacja</entry>
       <entry>Najpierw zmniejsza warto�� $a o jeden, potem zwraca $a.</entry>
      </row>
      <row>
       <entry>$a--</entry>
       <entry>Post-dekrementacja</entry>
       <entry>Najpierw zwraca $a, potem zmniejsza $a o jeden.</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
   <para>
    Prosty skrypt przyk�adowy:
    <informalexample>
     <programlisting role="php">
&lt;?php
echo "&lt;h3&gt;Post-inkrementacja&lt;/h3&gt;";
$a = 5;
echo "Powinno by� 5: " . $a++ . "&lt;br&gt;\n";
echo "Powinno by� 6: " . $a . "&lt;br&gt;\n";

echo "&lt;h3&gt;Pre-inkrementacja&lt;/h3&gt;";
$a = 5;
echo "Powinno by� 6: " . ++$a . "&lt;br&gt;\n";
echo "Powinno by� 6: " . $a . "&lt;br&gt;\n";

echo "&lt;h3&gt;Post-dekrementacja&lt;/h3&gt;";
$a = 5;
echo "Powinno by� 5: " . $a-- . "&lt;br&gt;\n";
echo "Powinno by� 4: " . $a . "&lt;br&gt;\n";

echo "&lt;h3&gt;Pre-dekrementacja&lt;/h3&gt;";
$a = 5;
echo "Powinno by� 4: " . --$a . "&lt;br&gt;\n";
echo "Powinno by� 4: " . $a . "&lt;br&gt;\n";
?&gt;
     </programlisting>
    </informalexample>
   </para>
  </sect1>

  <sect1 id="language.operators.logical">
   <title>Operatory Logiczne</title>

   <table>
    <title>Opearotory Logiczne</title>
    <tgroup cols="3">
     <thead>
      <row>
       <entry>Przyk�ad</entry>
       <entry>Nazwa</entry>
       <entry>Opis</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>$a and $b</entry>
       <entry>I</entry>
       <entry>&true; je�li zar�wno $a jak i $b s� &true;.</entry>
      </row>
      <row>
       <entry>$a or $b</entry>
       <entry>Lub</entry>
       <entry>&true; je�li $a lub $b jest &true;.</entry>
      </row>
      <row>
       <entry>$a xor $b</entry>
       <entry>Wy�acznie-Lub</entry>
       <entry>&true; je�li $a lub $b jest &true;, ale nie jednocze�nie.</entry>
      </row>
      <row>
       <entry>! $a</entry>
       <entry>Nie</entry>
       <entry>&true; je�li $a nie jest &true;.</entry>
      </row>
      <row>
       <entry>$a &amp;&amp; $b</entry>
       <entry>I</entry>
       <entry>&true; je�li zar�wno $a jak i $b s� &true;.</entry>
      </row>
      <row>
       <entry>$a || $b</entry>
       <entry>Lub</entry>
       <entry>&true; je�li $a lub $b jest &true;.</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
   <simpara>
    Operatory "or" i "and" maj� inny priorytet ni� "||" i "&&" i w�a�nie z tego
    powodu w PHP s� dwa rodzaje operator�w "lub" i "i". (Zobacz
    <link linkend="language.operators.precedence">Priorytety Operator�w</link>.)
   </simpara>
  </sect1>

  <sect1 id="language.operators.precedence">
   <title>Priorytety operator�w</title>
   <para>
    Priorytet operatora okre�la, jak "silnie" operator wi��e ze sob� dwa stoj�ce
    obok niego wyra�enia. Na przyk�ad, w wyra�eniu <literal>1 +
    5 * 3</literal>, wynik wynosi <literal>16</literal>, nie
    <literal>18</literal> poniewa� operator mno�enia ("*") ma wy�szy priorytet 
    ni� operator dodawania ("+"). Za pomoc� nawias�w mo�na zmienia� priorytet 
    dzia�a� wed�ug regu� arytmetyki. Na przyk�ad: <literal>(1 + 5) * 3</literal>
    jest r�wne <literal>18</literal>.
   </para>
   <para>
    Poni�sza tabela zawiera priorytet operator�w, od najni�szego priorytetu na 
    g�rze.
    <table>
     <title>Priorytety operator�w</title>
     <tgroup cols="2">
      <thead>
       <row>
        <entry>Powi�zanie</entry>
        <entry>Operator</entry>
       </row>
      </thead>
      <tbody>
       <row>
        <entry>lewe</entry>
        <entry>,</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>or</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>xor</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>and</entry>
       </row>
       <row>
        <entry>prawe</entry>
        <entry>print</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>
         = += -= *= /= .= %= &amp;= |= ^= ~= &lt;&lt;= &gt;&gt;=
        </entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>? :</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>||</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>&amp;&amp;</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>|</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>^</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>&amp;</entry>
       </row>
       <row>
        <entry>bez powi�zania</entry>
        <entry>== != === !==</entry>
       </row>
       <row>
        <entry>bez powi�zania</entry>
        <entry>&lt; &lt;= &gt; &gt;=</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>&lt;&lt; &gt;&gt;</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>+ - .</entry>
       </row>
       <row>
        <entry>lewe</entry>
        <entry>* / %</entry>
       </row>
       <row>
        <entry>prawe</entry>
        <entry>! ~ ++ -- (int) (double) (string) (array) (object) @</entry>
       </row>
       <row>
        <entry>prawe</entry>
        <entry>[</entry>
       </row>
       <row>
        <entry>bez powi�zania</entry>
        <entry>new</entry>
       </row>
      </tbody>
     </tgroup>
    </table>
   </para>
  </sect1>

  <sect1 id="language.operators.string">
   <title>Operatory �a�cuchowe</title>
   <simpara>
    W PHP s� dwa operatory operuj�ce na �a�cuchach znak�w (stringach). Pierwszym
    z nich jest operator konkatenacji (po��czenia) ('.'), kt�ry zwraca �a�cuch 
    b�d�cy po��czeniem zawarto�ci lewego i prawego operandu. Drugim z nich jest
    operator przypisania konkatenacyjnego ('.='), kt�ry do��cza zawarto�� 
    wyra�enia stojacego z prawej strony do zmiennej stojacej z lewej strony. 
    Zobacz tak�e <link
    linkend="language.operators.assignment">Operatory Przypisania</link>.
   </simpara>

   <para>
    <informalexample>
     <programlisting role="php">
$a = "Witaj ";
$b = $a . "�wiecie!"; // teraz $b zawiera ci�g "Witaj �wiecie!"

$a = "Witaj ";
$a .= "�wiecie!";     // teraz $a zawiera ci�g "Witaj �wiecie!"
     </programlisting>
    </informalexample>
   </para>
  </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
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