## Introduction

In mathematics, operators let us specify the mathematical operations to perform on numbers, such as addition, subtraction, multiplication, and division. A mathematical expression is a combination of values, variables, operators, and functions. For example,

$$4(x^2 + 2x - 6).$$

The corresponding PHP expression would be

4*($x**2 + 2*$x - 6).

In PHP programming, in addition to the arithmetic operators, several other types of operators exist too.

• Arithmetic Operators
• Assignment operators
• Increment/Decrement Operators
• Comparison Operators
• Logical Operators

The above operators can be classified as one of the following 3 types depending on the number of operands required.

• Unary operators: take a single operand (e.g. increment ($x++), logical not (!$x).
• Binary operators: take two operands (e.g. addition ($x+$y), subtraction ($x-$y).
• Ternary operator: requires three operands (e.g. expr ? x : y). It’s a single-line if statement that returns x if expr is TRUE and y if expr is FALSE.

## Arithmetic Operators

The PHP arithmetic operators are used to perform common arithmetic operations on variables. In addition to the four main operations (add, subtract, multiply, and divide), we can also perform exponentiation ** and compute the modulo (%). The following table summarizes the arithmetic operations.

Operator Type Description Example
+ Binary Addition $x+$y
- Binary Subtraction $x-$y
* Binary Multiplication $x*$y
/ Binary Division $x/$y
% Binary Modulo $x%$y
** Binary Exponentiation $x**2 Example Addition and subtraction operators. 1<?php 2$x = 20;
3    $y = 10; 4 echo$x+$y; // addition 5 echo "<BR>"; 6 echo$x-$y; // subtraction 7?>  30 10  Example Multiplication and division operators. 1<?php 2$a = 2;
3    $b = 3; 4 echo$a*$b; // multiplication 5 echo "<BR>"; 6 echo$b/$a; // division 7?>  6 1.5  Example Modulo and exponentiation operators. 1<?php 2$a = 10;
3    $b = 3; 4 echo$a%$b; // modulo 5 echo "<BR>"; 6 echo$b**3; // exponentiation
7?>

1
27


## Arithmetic Operator Precedence

Similar to Python, PHP arithmetic operators also obey the PEMDAS rule to determine the precedence of multiple operators appearing in an expression. In short, powers are executed before multiplication and division, which are in turn executed before addition and subtraction.

First Letter Order of Precedence Operator
P Parentheses ()
E Exponentiation **
M Multiplication *
D Division /
A Addition +
S Subtraction -

The precedence of operators above is listed from High to low. For M and D, we perform (M)ultiplication or (D)ivision from left to right based on whichever operation comes first. Similarly, for A and S, we perform (A)ddition or (S)ubtraction from left to right based on whichever operation comes first.

Example

Arithmetic operator precedence.

 1<?php
2    $a = 6; 3$b = 3;
4    $c = 2; 5 echo$a+$b*$c; // multiplication > addition
6    echo "<BR>";
7    echo $b*$c**3; // exponentiation > multiplication
8    echo "<BR>";
9    echo $a-$b+$c; // addition & subtraction -> left to right 10 echo "<BR>"; 11 echo$a/$b*$c; // multiplication & division -> left to right
12?>

12
24
5
4


We can often use parentheses to prioritize operations within the parentheses.

Example

Arithmetic operator precedence using parentheses.

 1<?php
2    $a = 6; 3$b = 3;
4    $c = 2; 5 echo ($a+$b)*$c; // 18
6    echo "<BR>";
7    echo ($b*$c)**3; // 216
8    echo "<BR>";
9    echo $a-($b+$c); // 1 10 echo "<BR>"; 11 echo$a/($b*$c); // 1
12    echo "<BR>";
13    echo $a/(12/$b*$c); // 0.75 14?>  18 216 1 1 0.75  In the last example, $a/(12/$b*$c) evaluates to 6/(12/3*2) $\rightarrow$ 6/(4*2) $\rightarrow$ 6/(8) $\rightarrow$ 0.75. The operators within the parentheses also follow the PEDMAS rule.

## Assignment Operators

In addition to the assignment operator =, PHP has several other similar operators that make our life easier. Consider for example the assignment statement $x =$x + 2. This can be simplied as $x += 2 where += is the addition assignment operator that adds the value on the right side to the variable on the left. Other similar assignment operators are summarized below. Operator Type Description Example Meaning = Binary Assignment $x = 2 $x = 2 += Binary Addition $x += 5 $x =$x + 5
-= Binary Subtraction $x -= 2 $x = $x - 2 *= Binary Multiplication $x *= 3 $x =$x * 3
/= Binary Division $x /= 4  $x = $x / 4 .= Binary Concatenation $x .= $y $x = $x .$y
%= Binary Modulo $x %= 3 $x = $x % 3 The . is the concatenation operator as discussed in the topic on strings. The operator can also be applied to numeric variables. Example Using assignment operators.  1<?php 2$a = 6; $b = 3;$c = 2; $d = 4;$e = 8;
3    echo $a += 2; // 8 4 echo "<BR>"; 5 echo$b -= 2; // 1
6    echo "<BR>";
7    echo $c *= 2; // 4 8 echo "<BR>"; 9 echo$d /= 2; // 2
10    echo "<BR>";
11    echo $e %= 3; // 2 12?>  8 1 4 2 2  Example Using the concatenation operator. 1<?php 2$a = 6; $b = 3;$c = 2;
3    echo $a .=$b; // 63
4    echo "<BR>";
5    echo $c .=$a; // 263
6?>

63
263


## Increment/Decrement Operators

The PHP increment operators are used to increment a variable’s value whereas the PHP decrement operators are used to decrement a variable’s value. The following table summarizes the increment/decrement operations.

Operator Type Description Example
++ Unary Pre-increment ++$x ++ Unary Post-increment $x++
-- Unary Pre-decrement --$y -- Unary Post-decrement $y--

Example

4 ways of making a unit increment to a variable.

 1<?php
2    $count = 1; 3$count = $count + 1; //$count=2
4    echo $count . "<br>"; 5$count += 1;         // $count=3 6 echo$count . "<br>";
7    $count++; //$count=4
8    echo $count . "<br>"; 9 ++$count;            // $count=5 10 echo$count . "<br>";
11?>

2
3
4
5


Example

4 ways of making a unit decrement to a variable.

 1<?php
2    $count = 1; 3$count = $count - 1; //$count=0
4    echo $count . "<br>"; 5$count -= 1;         // $count=-1 6 echo$count . "<br>";
7    $count--; //$count=-2
8    echo $count . "<br>"; 9 --$count;            // $count=-3 10 echo$count . "<br>";
11?>

0
-1
-2
-3


Example

Making an increment to a variable.

1<?php
2    $count = 0; 3$count = $count + 10; 4 echo$count . "<br>";
5    $count += 10; 6 echo$count . "<br>";
7?>

10
20


Example

Making a decrement to a variable.

1<?php
2    $count = 20; 3$count = $count - 5 ; 4 echo$count . "<br>";
5    $count -= 8; 6 echo$count . "<br>";
7?>

15
7


In the following example, the pre-increment operator on $x tells PHP to first increment the value of $x and then to test whether its value is 11 and, if it does, to output its value.

Example

Making a pre-increment.

1<?php
2    $x = 10; 3 if (++$x == 11) echo $x; //pre-increment 4?>  11  In the following example, the post-increment operator on $x tells PHP to first test whether its value is 10 and if it does, to output its value after incrementing its value.

Example

Making a post-increment.

1<?php
2    $x = 10; 3 if ($x++ == 10) echo $x; //post-increment 4?>  11  ## Comparison Operators Comparison operators are generally used inside a construct such as an if statement in which you need to compare two items. For example, you may wish to know whether a variable you have been incrementing has reached a specified value. Operator Type Description Example == Binary is equal to $x == $y != Binary is not equal to $x != $y > Binary is greater than $x > $y < Binary is less than $x < $y >= Binary is greater than or equal to $x >= $y <= Binary is less than or equal to $x <= $y === Binary is identical to $x === $y !== Binary is not identical $x !== $y Example Comparison operators.  1<?php 2$a = 5; $b = 6;$c = 7;
3    echo "Is $a equal to$b: " ,  $a ==$b;
4    echo "<BR>";
5    echo "Is $a not equal to$b: " ,  $a !=$b;
6    echo "<BR>";
7    echo "Is $c greater than to$b: " ,  $c >$b;
8    echo "<BR>";
9    echo "Is $c less than to$b: " ,  $c <$b;
10?>

Is 5 equal to 6:
Is 5 not equal to 6: 1
Is 7 greater than to 6: 1
Is 7 less than to 6:

👀 Review

Recall that PHP will return nothing (null) if the expression evaluates to false and return a 1 if it evaluates to true.

The operator === is also called an identity operator. $x ===$y will only return true if both variables are equal in value and type. On the other hand, $x ==$ywill return true as long as the values are equal, regardless of the data type.

Example

Using the identity operator.

1<?php
2    $a = 10; 3$b = "10";
4    $c = 10; 5 if ($a == $b) echo "a and b are equal." . "<BR>"; 6 if ($a === $b) echo "a and b are identical" . "<BR>"; 7 if ($a === $c) echo "a and c are identical" . "<BR>"; 8?>  a and b are equal. a and c are identical  In the above example, $a and $b have the same value 10, therefore, $a == $b returns 1 and the accompanying statement is printed. However, $a and $b are of different types, therefore $a === $b returns null and the statement is not printed. Finally $a === $c is true since both $a and $c share the same value and data type. ## The Ternary Operator The ternary operator ?: is similar to the if... else statement and used in the form (condition) ? (statement1) : (statement2) which will return either statement1 or statement2 depending on whether condition evaluates to TRUE or FALSE. Operator Type Description Example expr ? x : y Ternary Returns x if expr is TRUE and y if expr is FALSE. $x==$y ? "equal" : "not equal" In the following example, the string "pass" is printed since the condition $score>=50 evaluates to true.

Example

Using the ternary operator.

1<?php
2    $score=62; 3 echo ($score>=50) ? "pass" : "Fail";
4?>

pass


Example

Assigning result of the ternary operator to a variable.

1<?php
2    $score=62; 3$result = ($score>=50) ? "pass" : "Fail"; 4 echo$result
5?>

pass


## Logical Operators

Comparison operators are generally used inside a construct such as an if statement in which you need to compare two items. For example, you may wish to know whether a variable you have been incrementing has reached a specified value.

Operator Type Description Example
&& Binary AND $i == 1 &&$j == 2
and Binary low-precedence AND $i == 1 and$j == 2
||  Binary OR $k < 3 ||$k > 10
or Binary low-precedence OR $k < 3 or$k > 10
! Unary NOT ! ($i ==$j )
xor Binary exclusive OR $i xor$j

The && and and operators return the same results. The only difference between the && and and operators are their precedences. The same can be said of the difference between the || and or operators.

The following table shows all the possible combinations of the logical operators applied to 2 operands a and b and their outcomes. For example, if a is false and b is true, then a and b will return false, a or b will return true and a xor b will return true.

Inputs Results
a b AND OR XOR
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE

The xor operator applied to a xor b will produce true if only one of the two operands is true.

Example

Using the logical operators.

1<?php
2    $a = 1;$b = 0;
3    echo "1:" . ($a &&$b) . "<br>";
4    echo "2:" . ($a ||$b) . "<br>";
5    echo "3:" . ($a xor$b) . "<br>";
6    echo "4:" . !\$a . "<br>";
7?>

1:
2:1
3:1
4:


Only the second and third expressions return a true.