Operators in PHP
| Example |
Name |
Result |
| $a + $b |
Addition |
Sum of $a and $b. |
| $a - $b |
Subtraction |
Difference of $a and $b. |
| $a * $b |
Multiplication |
Product of $a and $b. |
| $a / $b |
Division |
Quotient of $a and $b. |
| $a % $b |
Modulus |
Remainder of $a divided by $b. |
The division operator ("/") returns a float value anytime, even if the two operands are integers (or strings that get converted to integers).
The basic assignment operator is "=". Your first inclination might be to think of this as "equal to". Don't. It really means that the the left operand gets set to the value of the expression on the rights (that is, "gets set to").
The value of an assignment expression is the value assigned. That is, the value of "$a = 3" is 3. This allows you to do some tricky things:
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4
In addition to the basic assignment operator, there are "combined operators" for all of the binary arithmetic and string operators that allow you to use a value in an expression and then set its value to the result of that expression. For example:
$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";
Bitwise operators allow you to turn specific bits within an integer on or off. If both the left- and right-hand parameters are strings, the bitwise operator will operate on the characters in this string.
<?php
echo 12 ^ 9; // Outputs '5'
echo "12" ^ "9"; // Outputs the Backspace character (ASCII 8)
// ('1' (ASCII 49)) ^ ('9' (ASCII 57)) = #8
echo "hallo" ^ "hello"; // Outputs the ASCII values #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>
| Example |
Name |
Result |
| $a & $b |
And |
Bits that are set in both $a and $b are set. |
| $a | $b |
Or |
Bits that are set in either $a or $b are set. |
| $a ^ $b |
Xor |
Bits that are set in $a or $b but not both are set. |
| ~ $a |
Not |
Bits that are set in $a are not set, and vice versa. |
| $a << $b |
Shift left |
Shift the bits of $a $b steps to the left (each step means "multiply by two") |
| $a >> $b |
Shift right |
Shift the bits of $a $b steps to the right (each step means "divide by two") |
Comparison operators, as their name implies, allow you to compare two values.
| Example |
Name |
Result |
| $a == $b |
Equal |
TRUE if $a is equal to $b. |
| $a === $b |
Identical |
TRUE if $a is equal to $b, and they are of the same type. (PHP 4 only) |
| $a != $b |
Not equal |
TRUE if $a is not equal to $b. |
| $a <> $b |
Not equal |
TRUE if $a is not equal to $b. |
| $a !== $b |
Not identical |
TRUE if $a is not equal to $b, or they are not of the same type. (PHP 4 only) |
| $a < $b |
Less than |
TRUE if $a is strictly less than $b. |
| $a > $b |
Greater than |
TRUE if $a is strictly greater than $b. |
| $a <= $b |
Less than or equal to |
TRUE if $a is less than or equal to $b. |
| $a >= $b |
Greater than or equal to |
TRUE if $a is greater than or equal to $b. |
PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.
If the track_errors feature is enabled, any error message generated by the expression will be saved in the global variable $php_errormsg. This variable will be overwritten on each error, so check early if you want to use it.
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
Note: The @-operator works only on expressions. A simple rule of thumb is: if you can take the value of something, you can prepend the @ operator to it. For instance, you can prepend it to variables, function and include() calls, constants, and so forth. You cannot prepend it to function or class definitions, or conditional structures such as if and foreach, and so forth.
PHP supports one execution operator: backticks (``). Note that these are not single-quotes! PHP will attempt to execute the contents of the backticks as a shell command; the output will be returned (i.e., it won't simply be dumped to output; it can be assigned to a variable).
$output = `ls -al`;
echo "<pre>$output</pre>";
PHP supports C-style pre- and post-increment and decrement operators.
| Example |
Name |
Effect |
| ++$a |
Pre-increment |
Increments $a by one, then returns $a. |
| $a++ |
Post-increment |
Returns $a, then increments $a by one. |
| --$a |
Pre-decrement |
Decrements $a by one, then returns $a. |
| $a-- |
Post-decrement |
Returns $a, then decrements $a by one. |
| Example |
Name |
Result |
| $a and $b |
And |
TRUE if both $a and $b are TRUE. |
| $a or $b |
Or |
TRUE if either $a or $b is TRUE. |
| $a xor $b |
Xor |
TRUE if either $a or $b is TRUE, but not both. |
| ! $a |
Not |
TRUE if $a is not TRUE. |
| $a && $b |
And |
TRUE if both $a and $b are TRUE. |
| $a || $b |
Or |
TRUE if either $a or $b is TRUE |
There are two string operators. The first is the concatenation operator ('.'), which returns the concatenation of its right and left arguments. The second is the concatenating assignment operator ('.='), which appends the argument on the right side to the argument on the left side. Please read Assignment Operators for more information.
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a .= "World!"; // now $a contains "Hello World!"
The only array operator in PHP is the + operator. It appends the right handed array to the left handed, whereas duplicated keys are NOT overwritten.
$a = array("a" => "apple", "b" => "banana");
$b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;
var_dump($c);
array(3)
{
["a"]=> string(5) "apple"
["b"]=> string(6) "banana"
["c"]=> string(6) "cherry"
}
TOP