Операторите представляват конструкции на езика, чрез които се извършват различни операции с променливите като аритметични операции (събиране, изваждане, умножение, деление), присвояване на стойности на променливи, сравняване на променливи и пр. В материалите за променливите ние вече употребихме оператора за присвояване на стойност, който е равенство (=) и оператора за събиране, който е плюс (+).

В PHP съществуват няколко вида оператори. Основните от тях са представени в този и следващия материал:

1. Аритметични оператори
+ събиране
– изваждане
* умножение
/ деление
. съединяване на низове /нарича се „конкатенация на низове“/
% деление по модул – резултата, който се връща, е целочисления остатък от делението на двете променливи

Ясно е, че с първите четири оператора могат да се събират, изваждат и т.н. стойностите на дадени променливи. Например да зададем на променлива $prom1 стойност 100 и на $prom2 стойност 50 и да извършим някаква операция с тях:

<?php

// Пример за събиране

$prom1 = 100;
$prom2 = 50;

$prom1 = $prom1 + $prom2;

echo „$prom1“;

?>

Горния код ще върне резултат 150 (100 + 50 = 150), тъй като увеличихме стойността на $prom1 с 50 единици като я събрахме със стойността на $prom2.

Същия резултат ще получим и от операцията

$prom1 = $prom1 + 50;

При

$prom1 = $prom1 * $prom2;

и при
$prom1 = $prom1 * 50;

резултата ще е 5000 (умножение 100 по 50) и т.н.

По-особен е оператора за съединяване (конкатениране) на низове, който е точка (.) Той не извършва пресмятане, а просто съединява двете стойности, така че ако напишем

$prom1 = $prom1 . $prom2;

резултата ще бъде 10050, т.е. „снаждане“ на 100 с 50.

Кода

$prom1 = $prom1 % $prom2;

ще върне резултат нула, тъй като това е целочисления остатък при делене 100 на 50.

2. Оператори за присвояване
= присвояване на стойност
+= едновременно сбор и присвояване на стойност
-= едновременно изваждане и присвояване на стойност
*= едновременно умножение и присвояване на стойност
/= едновременно деление и присвояване на стойност
.= едновременно конкатениране и присвояване на стойност
%= едновременно деление по модул и присвояване на стойност

Вече познавате оператора за присвояване на стойност (=). Той има няколко разновидности, които позволяват да се извърши някаква аритметична операция и едновременно с това новата стойност да се присвои на дадена променлива. Нека да зададем отново на променливата $prom1 стойност 100 и да извършим следната операция:

<?php

// Пример за едновременно събиране и присвояване на стойност

$prom1 = 100;

$prom1 += 50;

echo „$prom1“;

?>

Резултата от горния код ще бъде 150, тъй като с операцията $prom1 += 50; увеличаваме стойността на променливата $prom1 с 50 единици, така че тя става 150 и едновременно с това присвояваме новата стойност на $prom1. Т.е. този код е напълно аналогичен на кода

$prom1 = $prom1 + $prom2;

където $prom2 е със стойност 50 или на операцията

$prom1 = $prom1 + 50;

Съответно операцията

$prom1 *= 50;

ще ни даде резултат 5000 и е напълно аналогична с

$prom1 = $prom1 * $prom2;
// Където $prom2 е 50

или

$prom1 = $prom1 * 50;

и т.н.

Приоритет на оператори
Тук трябва да споменем за една важна особеност на операторите – всички оператори имат предварително определен приоритет на изпълнение. Това означава, че независимо в какъв ред подредите няколко оператора, те ще се изпълнят не според това кой от тях сте написали по-напред (по-вляво в кода), а според приоритета си. Например операторите за умножение и деление имат по-висок приоритет на изпълнение от операторите за събиране и изваждане. Нека да напишем следния код:

<?php

$izchislenie = 100 – 50 * 20;

echo „Резултата от изчислението е $izchislenie“;

?>

При този случай по-напред (по-вляво) е зададен оператора за изваждане (-), а след него е оператора за умножение (*). Ако изпълнението на кода следваше тази логика, тогава резултата би трябвало да бъде 1000, тъй като 100 минус 50 е 50, умножено по 20 е 1000. Резултата от този код обаче ще бъде -900, защото пръв по приоритет е оператора за умножение, т.е. първото действие е 50 по 20, което е 1000, а след това е изваждането 100 минус 1000, което е -900. Ако желаете да получите резултата 1000 трябва да напишете кода в следния вид:

<?php

$izchislenie = (100 – 50) * 20;

echo „Резултата от изчислението е $izchislenie“;

?>

Т.е. трябва да използвате кръглите скоби по начина по който те се ползват за решаване на задачи със скоби.

Ако два или повече оператора имат един и същ приоритет, едва в такъв случай те се изпълняват отляво надясно според мястото си в кода.