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 =
&$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 & $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 << $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 >> $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 <> $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 < $b</entry>
<entry>Mniejszy ni�</entry>
<entry>&true; je�li $a jest mniejszy od $b.</entry>
</row>
<row>
<entry>$a > $b</entry>
<entry>Wi�kszy ni�</entry>
<entry>&true; je�li $a jest wi�kszy od $b.</entry>
</row>
<row>
<entry>$a <= $b</entry>
<entry>Mniejszy lub r�wny</entry>
<entry>&true; je�li $a jest mniejszy lub r�wny $b.</entry>
</row>
<row>
<entry>$a >= $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">
<?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.
?>
</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 "<pre>$output</pre>";
</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">
<?php
echo "<h3>Post-inkrementacja</h3>";
$a = 5;
echo "Powinno by� 5: " . $a++ . "<br>\n";
echo "Powinno by� 6: " . $a . "<br>\n";
echo "<h3>Pre-inkrementacja</h3>";
$a = 5;
echo "Powinno by� 6: " . ++$a . "<br>\n";
echo "Powinno by� 6: " . $a . "<br>\n";
echo "<h3>Post-dekrementacja</h3>";
$a = 5;
echo "Powinno by� 5: " . $a-- . "<br>\n";
echo "Powinno by� 4: " . $a . "<br>\n";
echo "<h3>Pre-dekrementacja</h3>";
$a = 5;
echo "Powinno by� 4: " . --$a . "<br>\n";
echo "Powinno by� 4: " . $a . "<br>\n";
?>
</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 && $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>
= += -= *= /= .= %= &= |= ^= ~= <<= >>=
</entry>
</row>
<row>
<entry>lewe</entry>
<entry>? :</entry>
</row>
<row>
<entry>lewe</entry>
<entry>||</entry>
</row>
<row>
<entry>lewe</entry>
<entry>&&</entry>
</row>
<row>
<entry>lewe</entry>
<entry>|</entry>
</row>
<row>
<entry>lewe</entry>
<entry>^</entry>
</row>
<row>
<entry>lewe</entry>
<entry>&</entry>
</row>
<row>
<entry>bez powi�zania</entry>
<entry>== != === !==</entry>
</row>
<row>
<entry>bez powi�zania</entry>
<entry>< <= > >=</entry>
</row>
<row>
<entry>lewe</entry>
<entry><< >></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
-->