Język PHP bazuje w większości na wyrażeniach, a tu najważniejsze są operatory. Można je podzielić na jednoargumentowe i dwuargumentowe.
Ze względu na zastosowanie operatorów dzieli się je na:
-arytmetyczne
-przypisania,
-porównania,
-inkrementacji i dekrementacji,
-bitowe,
-logiczne,
-kontroli błędów,
-wykonania polecenia systemowego,
-napisowy,
-tablicowy.
Operatory arytmetyczne – służą do wykonywania działań arytmetycznych.
- operator dodawania: „+”,
- operator odejmowania: „-”,
- operator mnożenia: „*”,
- operator dzielenia: „/”;
- operator modulo (reszta z dzielenia): „%”.
Operatory przypisania - właściwie taki operator jest jeden: „=”. Za jego pomocą nadaje się wartość zmiennej. Do operatorów przypisania można też zaliczać operatory złożone: +=, -=,*=. Operatory te wykonują dwa działania naraz. Są skróconą formą operacji zwiększania lub zmniejszania wartości zmiennej o wartość wyrażenia.
Np. $a+=5 to jest to samo co $a=$a+5 i oznacza: przypisz zmiennej $a wartość wynikającą z dodawania $a + 5.
Argument 1 |
Operator |
Argument 2 |
Znaczenie |
x | = |
y |
x=y |
x | += |
y |
x=x+y |
x | -= |
y |
x=x-y |
x | *= |
y |
x=x*y |
x | /= |
y |
x=x/y |
x | %= |
y |
x=x%y |
x | .= |
y |
x=x.y |
x | <<= |
y |
x=x<<y |
x | >>= |
y |
x=x>>y |
x | &= |
y |
x=x&y |
x | |= |
y |
x=x|y |
x | ^= |
y | x=x^y |
Operatory porównania – służą do konstruowania wyrażeń porównujących, znajdujących zastosowanie w instrukcjach sterujących wykonywaniem programu. Wyrażenia porównujące mają wartości typu boolowskiego.
-równość „==” - wynik jest true, gdy porównywane wyrażenia są równe co do wartości;
-identyczność „===” - wynik jest true, gdy porównywane wyrażenia są równe co do wartości i typu;
-różność „<>” lub „!=” - wynik jest true, gdy porównywane wyrażenia są różne co do wartości;
-różność „!==” - wynik jest true, gdy porównywane wyrażenia są różne ci do wartości i typu;
-mniejszość „<” - wynik jest true, gdy pierwsze wyrażenie ma mniejszą wartość niż drugie;
-większość „>” - wynik jest true, gdy pierwsze wyrażenie ma większą wartość niż drugie;
-mniejszość lub równość „<=” - wynik jest true, gdy pierwsze wyrażenie ma wartość mniejszą lub równą wartości drugiego wyrażenia;
-większość lub równość „>=” - wynik jest true, gdy pierwsze wyrażenie ma wartość większą lub równą wartości drugiego wyrażenia.
Operatory inkrementacji i dekrementacji – operatory jednoargumentowe, które mają za zadanie zwiększać lub zmniejszać wartość zmiennej o jeden. Są dwa rodzaje tych operatorów:
-przedrostkowe (preinkrementacja, predekrementacja),
-przyrostkowe (postinkrementacja, postdekrementacja).
Jeśli stosowane są przy samodzielnej zmiennej nie ma znaczenia czy używany jest przedrostkowy czy przyrostkowy rodzaj, działanie będzie takie samo. Inaczej wygląda sytuacja , gdy operatorów używamy przy zmiennej w wyrażeniu. Jeśli używamy operatora przedrostkowego, np. preinkrementacji to najpierw wartość zmiennej jest zwiększana, a potem używana w wyrażeniu. Jeśli używamy operatora postinkrementacji najpierw wartość zmiennej zostanie pobrana do wyrażenia, a dopiero później zwiększona o jeden.
Przykłady:
-preinkrementacja: ++$a;
-postinkrementacja: $a++;
-predekrementacja: --$a;
-postdekrementacja: $a--;
Operatory bitowe – służą do wykonywania operacji na bitach.
-iloczyn bitowy (koniunkcja bitowa, AND) - „&”
Włączone zostają tylko te bity, które były włączone w obu argumentach.
Argument 1 |
Argument 2 |
Wynik |
1 | 1 |
1 |
1 | 0 | 0 |
0 | 1 |
0 |
0 | 0 |
0 |
-suma bitowa (alternatywa bitowa, OR) - „|”
Włączone zostają te bity, które były włączone przynajmniej w jednym argumencie.
Argument 1 |
Argument 2 |
Wynik |
1 | 1 |
1 |
1 | 0 | 1 |
0 | 1 |
1 |
0 | 0 |
0 |
-negacja bitowa (uzupełnienie do jedynki, NOT) - „~”
Zmiana stanu bitów, jeśli było 1 po negacji będzie 0 i odwrotnie.
Argument |
Wynik |
1 | 0 |
0 | 1 |
-suma bitowa modulo 2 (alternatywa bitowa wykluczająca, różnica symetryczna XOR) - „^”
Włączone zostają te bity, które miały różne stany w obu argumentach.
Argument 1 |
Argument 2 |
Wynik |
1 | 1 |
0 |
1 | 0 | 1 |
0 | 1 |
1 |
0 | 0 |
0 |
-przesunięcie bitowe w prawo i w lewo - „>>” i „<<”
Przesunięcie bitowe w prawo lub lewo polega na przesunięciu wszystkich bitów argumentu znajdującego się z lewej strony operatora w prawo lub w lewo o liczbę miejsc wskazaną przez argument po prawej stronie operatora.
Np. $liczba = 15 << 2; /Przesunięcie w lewo o dwa miejsca bitów wartości 15.
Operatory logiczne – służą do tworzenia wyrażeń logicznych z wyrażeń mających wartości typu boolowskiego.
-logiczne I ( iloczyn logiczny) – „and” lub „&&”
Wynikiem jest wartość true wtedy i tylko wtedy, gdy oba argumenty mają wartość true.
Argument 1 |
Argument 2 |
Wynik |
true | true |
true |
true | false | false |
false | true |
false |
false | false |
false |
-logiczne LUB (suma logiczna ) - „or” lub „||”
Wynikiem jest wartość true wtedy i tylko wtedy, gdy przynajmniej jeden z argumentów ma wartość true.
Argument 1 |
Argument 2 |
Wynik |
true | true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
-logiczne NIE (negacja ) - „!”
Zmienia wartość argumentu na przeciwną.
Argument |
Wynik |
true | false |
false | true |
-logiczne ALBO (WYŁĄCZNIE-LUB, alternatywa wykluczająca) - „xor”
Wynikiem jest wartość true wtedy i tylko wtedy, gdy oba argumenty mają różną wartość.
Argument 1 |
Argument 2 |
Wynik |
true | true |
false |
true |
false |
true |
false |
true |
true |
false |
false |
false |
Operator kontroli błędów - „@”. Wyrażenie, przed którym wstawi się znak @ spowoduje nie wyświetlanie jakiegokolwiek błędu lub ostrzeżenia. Błędy spowodowane tym wyrażeniem będą ignorowane.
Operator wykonania polecenia systemowego – apostrof wsteczny `` . Zawartość tego apostrofu zostanie wykonana jako polecenie systemowe. Wynik polecenia zostanie zwrócony (nie będzie wysłany do przeglądarki tylko będzie dostępny do przypisania do zmiennej).
Operator napisowy– kropka „.”. Służy do łączenia napisów.
Przykład:
$napis = " dodatki";
echo "Darmowe".$napis;
Operator tablicowy - „+”. Dopisuje prawy operand tablicowy do lewego, przy czym zduplikowane klucze nie są nadpisywane.
Przykład:
$a = array("a" => "biały", "b" => "czerwony");
$b = array("a" =>"niebieski", "b" => "zielony", "c" => "czarny");
$c = $a + $b;
var_dump($c);
array(3) {
["a"]=>
string(5) "biały"
["b"]=>
string(6) "czerwony"
["c"]=>
string(6) "czarny"
}
Priorytety operatorów:
Lp. | Rodzaje operatorów |
Symbole |
1 |
Tworzenie obiektów |
new |
2 |
Indeks tablicy |
[] |
3 |
Inkrementacja, dekrementacja |
++, -- |
4 |
Negacje, konwersje typów, kontrola błędów |
!, ~, ++, --, (int), (float), (string), (array), (object), @ |
5 |
Mnożenie, dzielenie, reszta z dzielenia |
*, /, % |
6 |
Dodawanie, odejmowanie, łączenie łańcuchów znakowych |
+, -, . |
7 |
Przesunięcia bitowe |
<<, >> |
8 |
Relacje (mniejsze, większe, mniejsze lub równe, większe lub równe) |
<, >, <=, >= |
9 |
Relacje (równe, identyczne, nierówne, nieidentyczne) |
==, ===, !=, !== |
10 |
Iloczyn bitowy |
& |
11 |
Bitowa różnica symetryczna (suma bitowa modulo 2) |
^ |
12 |
Suma bitowa |
| |
13 |
Iloczyn logiczny |
&& |
14 |
Suma logiczna |
|| |
15 |
Warunkowy |
?: |
16 |
Operatory przypisania |
=, +=, -=, *=, /=, .=, %=, &=, ^=, |=, <<=, >>= |
17 |
Iloczyn logiczny |
and |
18 |
Logiczna różnica symetryczna |
xor |
19 |
Suma logiczna |
or |
20 |
Rozdzielanie wyrażeń |
, |