# [PHP] Operators

There are a few different types of operators in PHP and I will cover the most commonly used ones.

## Arithmetic Operators

These are list basic maths. The 4 most common are:

Sum of \$a and \$b.

````<?php\$a = 4;\$b = 3;echo \$a + \$b;?>`
```

Outputs:

`7`

### Subtraction

Difference of \$a and \$b.

````<?php\$a = 4;\$b = 3;echo \$a - \$b;?>`
```

Outputs:

`1`

### Multiplication

Product of \$a and \$b.

````<?php\$a = 4;\$b = 3;echo \$a * \$b;?>`
```

Outputs:

`12`

### Division

Quotient of \$a and \$b.

````<?php\$a = 4;\$b = 3;echo \$a / \$b;?>`
```

Outputs:

`1.33333333333`

## Assignment

An assignment operator assigns a value to a variable name.

``<?php\$a = (\$b = 10) + 5;?>``

With this \$a equals 15 and \$b is set to 10.

``<?php\$a = 10;\$a += 5;\$b = "hello ";\$b .= "world!";?>``

\$a is initially set to 10, then is changed to 15. \$b is initially set to 'hello ' then 'hello world!' by using the period before the equals (.=).

## Comparison

Comparison operators compare 2 values. These are often used in if statements, for example: if \$a equals \$b then do this.

### \$a == \$b

Returns TRUE if \$a is equal to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a == \$b); // 3 == 3 is truevar_dump(\$b == \$c); // 3 == 2 is falsevar_dump(0 == "s"); // 0 == 0 is truevar_dump("1" == "01"); // 1 == 1 is truevar_dump("1" == "1e0"); // 1 == 1 is true?>``

### \$a === \$b

Returns TRUE if \$a is identical to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a === \$b); // 3 === 3 is truevar_dump(\$b === \$c); // 3 === 2 is falsevar_dump(0 === "s"); // 0 === 0 is falsevar_dump("1" === "01"); // 1 === 1 is falsevar_dump("1" === "1e0"); // 1 === 1 is false?>``

### \$a != \$b, \$a <> \$b

Returns TRUE if \$a is not equal to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a != \$b); // 3 != 3 is falsevar_dump(\$b <> \$c); // 3 <> 2 is truevar_dump(0 != "s"); // 0 != 0 is falsevar_dump("1" != "01"); // 1 !=1 is falsevar_dump("1" <> "1e0"); // 1 <> 1 is false?>``

### \$a !== \$b

Returns TRUE if \$a is not identical to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a !== \$b); // 3 !== 3 is falsevar_dump(\$b !== \$c); // 3 !== 2 is truevar_dump(0 !== "s"); // 0 !== 0 is truevar_dump("1" !== "01"); // 1 !== 1 is truevar_dump("1" !== "1e0"); // 1 !== 1 is true?>``

### \$a < \$b

Returns TRUE if \$a is less than \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a < \$b); // 3 < 3 is falsevar_dump(\$b < \$c); // 3 < 2 is falsevar_dump(0 < "s"); // 0 < 0 is falsevar_dump("1" < "01"); // 1 < 1 is falsevar_dump("1" < "1e0"); // 1 < 1 is false?>``

### \$a > \$b

Returns TRUE if \$a is greater than \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a > \$b); // 3 > 3 is truevar_dump(\$b > \$c); // 3 > 2 is truevar_dump(0 > "s"); // 0 > 0 is falsevar_dump("1" > "01"); // 1 > 1 is falsevar_dump("1" > "1e0"); // 1 > 1 is false?>``

### \$a <= \$b

Returns TRUE if \$a is less than or equal to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a <= \$b); // 3 <= 3 is truevar_dump(\$b <= \$c); // 3 <= 2 is falsevar_dump(0 <= "s"); // 0 <= 0 is truevar_dump("1" <= "01"); // 1 <= 1 is truevar_dump("1" <= "1e0"); // 1 <= 1 is true?>``

### \$a >= \$b

Returns TRUE if \$a is greater than or equal to \$b.

``<?php\$a = 3;\$b = 3;\$c = 2;var_dump(\$a >= \$b); // 3 >= 3 is truevar_dump(\$b >= \$c); // 3 >= 2 is truevar_dump(0 >= "s"); // 0 >= 0 is truevar_dump("1" >= "01"); // 1 >= 1 is truevar_dump("1" >= "1e0"); // 1 >= 1 is true?>``

## Incrementing/Decrementing

Incrementing/Decrementing operators come in 2 forms, pre- and post-increment and decrement.

``<?phpecho "Postincrement\n";\$a = 5;echo "Should be 5: " . \$a++ . "\n";echo "Should be 6: " . \$a . "\n";echo "Preincrement\n";\$a = 5;echo "Should be 6: " . ++\$a . "\n";echo "Should be 6: " . \$a . "\n";echo "Postdecrement\n";\$a = 5;echo "Should be 5: " . \$a-- . "\n";echo "Should be 4: " . \$a . "\n";echo "Predecrement\n";\$a = 5;echo "Should be 4: " . --\$a . "\n";echo "Should be 4: " . \$a . "\n";?>``

Outputs:

```Postincrement
Should be 5: 5
Should be 6: 6
Preincrement
Should be 6: 6
Should be 6: 6
Postdecrement
Should be 5: 5
Should be 4: 4
Predecrement
Should be 4: 4
Should be 4: 4
```

## Logical

Logical operators return TRUE when variables match given the operator.

### \$a and \$b, \$a && \$b

``<?php\$a = 3;\$b = 3;\$c = 0;var_dump(\$a and \$b); // Returns truevar_dump(\$a and \$c); // Returns falsevar_dump(\$b && \$c); // Returns false?>``

### \$a or \$b, \$a || \$b

``<?php\$a = 3;\$b = 3;\$c = 0;var_dump(\$a or \$b); // Returns truevar_dump(\$a or \$c); // Returns truevar_dump(\$b || \$c); // Returns true?>``

### \$a xor \$b

``<?php\$a = 3;\$b = 3;\$c = 0;var_dump(\$a xor \$b); // Returns falsevar_dump(\$a xor \$c); // Returns truevar_dump(\$b xor \$c); // Returns true?>``

### !\$a

``<?php\$a = 3;\$b = 3;\$c = 0;var_dump(!\$a); // Returns falsevar_dump(!\$b); // Returns falsevar_dump(!\$c); // Returns true?>``

## String

String operators are the same as some of the assignment operators.

``<?php\$a = "Hello ";\$b = \$a . "World!"; // now \$b contains "Hello World!"\$a = "Hello ";\$a .= "World!"; // now \$a contains "Hello World!"?>``

The first use the concatenation operator (period) to concatenate both strings together. The second uses the concatenation assignment operator which appends the 2nd argument to the first.

For more information about operators in PHP, visit the PHP.net website which lists more operators and their uses.