Rozdzia│ 10. Operatory
Operatory Arytmetyczne
Przyk│ad |
nazwa |
rezultat |
$a + $b |
Dodawanie |
Suma $a I $b. |
$a - $b |
Odejmowanie |
R≤┐nica $a I $b. |
$a * $b |
Mno┐enie |
Iloczyn $a i $b. |
$a / $b |
Dzielenie |
Iloraz $a i $b. |
$a % $b |
Dzielenie Modulo |
Reszta z dzielenia $a przez $b. |
Operatory przypisania
Podstawowym argumentem przypisania jest "=", co oznacza ┐e lewy argument otrzymuje warto╢µ wyra┐enia znajduj▒cego siΩ po prawej stronie.
Warto╢ci▒ wyra┐enia przypisania jest przypisana warto╢µ. To znaczy, warto╢ci▒ "$a = 3" jest 3. Ta w│a╢ciwo╢µ pozwala na robienie kilku sprytnych rzeczy:
$a = ($b = 4) + 5; // $a jest r≤wne 9, a $b bΩdzie ustawione na 4.
Dodatkowo istniej▒ operatory │▒czenia dla wszystkich operator≤w arytmetycznych i │a±cuchowych. Na przyk│ad:
$a = 3;
$a += 5; // $a jest r≤wne 8, mo┐na to inaczej zapisaµ: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; //$b zawiera "Hello There!", lub inaczej $b = $b . "There!";
Uwaga: przypisanie kopiuje warto╢µ oryginalnej zmiennej do nowej zmiennej (wyznaczanie przez warto╢µ), wiΩc zmiana jednej nie bΩdzie dotyczyµ innych. Mo┐e to byµ przydatne je┐eli kopiujesz np. wielk▒ tablicΩ wewn▒trz pΩtli. PHP4 wspiera mechanizm przypisania przez referencjΩ, u┐ywaj▒c sk│adni $zmienna1 = &$zmienna2; co nie jest mo┐liwe w php. 'Przypisanie przez referencjΩ' oznacza, ┐e obie zmienne wskazuj▒ na te same dane (nie wystΩpuje ┐adne kopiowane).
Operatory bitowe
Operatory bitowe pozwalaj▒ manipulowaµ bitami.
Przyk│ad |
nazwa |
Rezultat |
$a & $b |
And |
Bity s▒ ustawione w obu $a i $b. |
$a | $b |
Or |
Bity s▒ ustawione w $a lub $b. |
$a ^ $b |
Xor |
Bity s▒ ustawione w $a lub $b ale nie w obu naraz. |
~ $a |
Not |
Negacja $a. |
$a << $b |
Shift left |
Przesuwa ka┐dy bit w lewo (mno┐enie przez dwa) |
$a >> $b |
Shift right |
Przesuwa ka┐dy bit w prawo (dzielenie przez dwa) |
Operatory por≤wnania
Operatory por≤wnania, jak ich nazwa wskazuje, umo┐liwiaj▒ por≤wnywanie dw≤ch warto╢ci.
Przyk│ad |
name |
Result |
$a == $b |
R≤wno╢µ |
Prawda je┐eli $a jest r≤wne $b. |
$a === $b |
Identyczno╢µ |
Prawda je┐eli $a jest r≤wne $b, i obie s▒ identycznego typu. (PHP4 only) |
$a != $b |
Nie r≤wno╢µ |
Prawda je┐eli $a nie jest r≤wne $b. |
$a < $b |
Mniejsze ni┐ |
Prawda je┐eli $a jest mniejsze ni┐ $b. |
$a > $b |
WiΩksze ni┐ |
Prawda je┐eli $a jest wiΩksze ni┐ $b. |
$a <= $b |
Mniejsze r≤wne |
Prawda je┐eli $a jest mniejsze lub r≤wne $b. |
$a >= $b |
WiΩksze r≤wne |
Prawda je┐eli $a jest wiΩksze lub r≤wne $b. |
Istnieje tak┐e potr≤jny operator warunkowym "? :" , kt≤ry dzia│a jak w C:
(expr1) ? (expr2) : (expr3);
Je┐eli expr1 jest prawd▒ to wynikiem jest expr2. Je╢li expr1 jest fa│szem to wynikiem jest expr3.
Operatory wykonania
PHP wspiera jeden operator wykonania: lewe apostrofy ( ` ` ). Uwaga: to nie s▒ zwyk│e apostrofy! PHP spr≤buje wykonaµ zawarto╢µ lewych apostrof≤w jako komendΩ shell'a; wynik wykonania jest zwracany; tzn. mo┐e byµ przypisany do zmiennej.
$output = `ls -al`;
echo "<pre>$output</pre>";
Zobacz tak┐e system(), passthru(),exec(),popen(), i escapeshellcmd().
Operatory inkrementacji/dekrementacji
PHP wspiera pre- i post-inkrementowane/dekrementowane operatory w stylu jΩzyka C.
Przyk│ad |
nazwa |
efekt |
++$a |
Pre-inkrementacja |
ZwiΩksza $a o jeden, p≤╝niej zwraca $a. |
$a++ |
Post-inkrementacja |
Zwraca $a, p≤╝niej zwiΩksza $a o jeden. |
--$a |
Pre-dekrementacja |
Zmniejsza $a o jeden, p≤╝niej zwraca $a. |
$a-- |
Post-dekrementacja |
Zwraca $a, P≤╝niej zmniejsza $a o jeden. |
Kilka prostych przyk│ad≤w:
<?php
echo "<h3>Postinkrementacja</h3>";
$a = 5;
echo "Powinno byµ 5: " . $a++ . "<br>\n";
echo "Powinno byµ 6: " . $a . "<br>\n";
echo "<h3>Preinkrementacja</h3>";
$a = 5;
echo "Powinno byµ 6: " . ++$a . "<br>\n";
echo "Powinno byµ 6: " . $a . "<br>\n";
echo "<h3>Postdekrementacja</h3>";
$a = 5;
echo "Powinno byµ 5: " . $a-- . "<br>\n";
echo "Powinno byµ 4: " . $a . "<br>\n";
echo "<h3>Predekrementacja</h3>";
$a = 5;
echo "Powinno byµ 4: " . --$a . "<br>\n";
echo "Powinno byµ 4: " . $a . "<br>\n";
?>
Operatory logiczne
Przyk│ad |
nazwa |
rezultat |
$a i $b |
And |
Prawda je┐eli $a i $b s▒ prawdziwe. |
$a or $b |
Or |
Prawda je┐eli $a lub $b jest prawdziwa. |
$a xor $b |
Or |
Prawda je┐eli $a lub $b jest prawdziwa, ale nie obie. |
! $a |
Not |
Prawda je┐eli $a nie jest prawd▒. |
$a && $b |
And |
Prawda je┐eli $a i $b s▒ prawdziwe. |
$a || $b |
Or |
Prawda je┐eli $a lub $b jest prawdziwa. |
Przyczyn▒ u┐ywania dw≤ch r≤┐nych odmian operator≤w "and" oraz "or" jest ich r≤┐ny piorytet. (Zobacz tak┐e Piorytety operator≤w.)
Piorytety operator≤w
Piorytety operator≤w okre╢laj▒ kolejno╢µ wykonywania operator≤w. Na przyk│ad, w wyra┐eniu 1 + 5 * 3, wynikiem jest 16 a nie 18, poniewa┐ operator mno┐enia ("*") ma wy┐szy priorytet ni┐ operator dodawania ("+").
Poni┐sza tabela przedstawia pierwsze±stwo operator≤w poczynaj▒c od tych z najni┐szym priorytetem.
piorytety operatr≤w |
|
najwy┐szy |
() {} |
|
~ ! ++ -- $ & |
+ - |
< <= > >= |
== != === |
& |
^ |
| |
&& |
|| |
= += -= *= /= .= %= &= |= ^= ~= <<= >>= |
AND |
XOR |
OR |
|
najni┐szy |
Operatory │a±cuchowe
Istniej▒ dwa operatory │a±cuchowe. Pierwszym jest operator │▒czenia ('.'), kt≤ry │▒czy prawy i lewy argument w jeden. Drugim operatorem jest operator │▒czenia i wyznaczenia ('.='). WiΩcej informacji uzyskasz w sekcji Operatory przypisania.
$a = "Hello ";
$b = $a . "World!"; // teraz $b zawiera "Hello World!"
$a = "Hello ";
$a .= "World!"; // teraz $a zawiera "Hello World!"
|