PHP Operators

Revision as of 13:03, 31 May 2007 by Neil (Talk | contribs) (PHP Comparison Operators)

Revision as of 13:03, 31 May 2007 by Neil (Talk | contribs) (PHP Comparison Operators)

Opertors in PHP, and any other prgramming language for that matter, enable us to perfrom tasks on variables and values such as assign, multiply, add, subtract and concatenate them. Operators take the form of symbols (such as + and -) and combinations of symbols (such as ++ and +=).

Operators in PHP work with operands which specify the variables and values that are to be used in the particalar operation. The number and location of these operands in relation to the operators (i.e. before and/or after the operator) depends on the type of operator in question. Let's take, for example, the following simple expression:

1 + 3;

In this expression we have one operator (the '+') and two operands (the numbers 1 and 3). The '+' operator adds the values of two operands (resulting in a vlaue of 4).

Operators can be combined to create complete expressions:

$myVar = 1 + 3;

In the above example, the assignment operator (=) assigns the result of the addition to the operand represented by the variable $myVar. After evaluating this expression the value of 4 will have been assigned to the variable $myVar.

In this chapter of PHP Essentials we will explore each type of operator and explain how they are used in relation to their operands.

PHP Assignment Operators

We breifly covered the basic PHP assignment operator in the An Introduction to PHP Variables chapter. We will now look at this and other assignment operators in more detail.

The assignment operator is used to assign a value to a variable and is represented by the equals (=) sign. The assignment operator can also be combined with arithmetic operators to combine an assignment with a mathemtatical operation (for example to multiple one value by another and assigning the result to the variable).

The following table lists the seven assignment operators available in PHP, together with descriptions and examples of their use:

OperatorTypeDescriptionExample
=AssignmentSets the value of the left hand operand to the value of the right $myVar = 30;
+=Addition-AssignmentAdds the value of left hand operand to the value of the right hand operand and assigns result to left hand operand$myVar = 10;
$myVar += 5;
-=Subtraction-AssignmentSubtracts the value of right hand operand from the value of the left hand operand and assigns result to left hand operand$myVar = 10;
$myVar -= 5;
*=Multiplication-AssignmentMultiplies the left hand operand by value of the right hand operand assigning result to left hand operand$myVar = 10;
$myVar *= 5;
/=Division-AssignmentDivides the left hand operand by value of the right hand operand assigning result to left hand operand$myVar = 10;
$myVar /= 5;
%=Modulo-AssignmentSets the value of the left hand operand to the remainder of the value after being divided by the right hand operand$myVar = 10;
$myVar %= 5;
.=Concatenation-OperandSets the value of the left hand operand to a string containing a concatenation of its value appended with the string in the right hand operand$sampleString="My color is ";
$sampleString += "blue";

PHP Arithmetic Operators

As the name suggests PHP arithmetic operators provide a mechanism for performing mathematical operations:

OperatorTypeDescriptionExample
+AdditionCalculates the sum of two operands $total = 10 + 20;
-SubtractionCalculates the difference between two operands $total = 10 - 20;
*MultiplicationMultiplies two operands $total = 10 * 20;
/DivisionDivides two operands $total = 10 / 20;
%ModulusReturns the reminader from dividing the first operand by the second $total = 20%10;

Arithmetic operators work with two operands, one to left and the other to the right of the operator. For example:

$var = 1 + 2; // Sets variable $var to the sum of 1 + 2

$var = 3 % 7; // Sets variable $var to the modulus of 3 and 7

$var1 = 10;

$var2 = $var1 / 2; // Sets variable $var2 to the value of 10 divided by 2

PHP Comparison Operators

The comparison operators provide the ability to compare one value against another and return either a true or false result depending on teh status of the match. For example you might use a comparison operator to check if a variable value matches a particular number, or whether one string is identical to another. PHP provides a wide selection of comparison operators for just about every comparison need.

The comparison operators are used with two operands, one to the left and one to the right of the operator. The following table outlines the PHP comparison operators and provides brief descriptions and examples:

OperatorTypeDescriptionExamples
==Equal toReturns true if first operand equals second$myVar = 10;
if ($myVar == 10)
echo 'myVar equals 10';
!=Not equal toReturns true if first operand is not equal to second$myVar = 10;
if ($myVar == 10)
echo 'myVar equals 10';
===Equal toReturns true if first operand equals second in both value and type$myVar = 10;
$myString="10";
if ($myVar === $myString)
echo 'myVar and myString are same type and value';

PHP Increment and Decrement Operators

When programming in any language it is not uncommon to need to increment or decrement the value stored in a variable by 1. This could be done long hand:

$myVar = $myVar-1;

A much quicker way, however, is to use the PHP increment and decrement operators. These consist of the operators ++ (to increment) and -- (to decrement) combined with an operand (the name of the variable to whcih the change is to be applied).

There are two ways of using these operators, pre and post. The pre mode performs the increment or decrement before performing the rest of the expression. For example, you might want to increment the value of a variable before it is assigned to another variable, or used in a calculation. In the post mode the increment or decrement is performed after the expression a has been performed. In this instance, you might want the value to be decrement after it has been assigned or used in a calculation.

Whether a pre or post is used depends on whether the operator appears before (for pre), or after (for post) the variable name in the expression. For example --$myVariable or $myVariable++.

The following table outlines the various forms of pre and post increment and decrement operatrors, together with examples that show how the equivalent task would need to be performed without the increment and decrement operators.

OperatorTypeDescriptionEquivalent
++$varPreincrementIncrements the variable value before it is used in rest of expression$var = 10;
$var2 = $var + 1;
--$varPredecrementDecrements the variable value before it is used in rest of expression$var = 10;
$var2 = $var - 1;
$var++PostincrementIncrements the variable value after it is used in rest of expression$var = 10;
$var2 = $var;
$var = $var + 1;
$var--PostdecrementDecrements the variable value after it is used in rest of expression$var = 10;
$var2 = $var;
$var = $var - 1;

PHP String Concatenation Operator

The PHP String concatenation operator is used to combine values to create a string. The concatenator operator is represented by a period/full stop (.) and can be used to build a string from other strings, variables containing non-strings (such as numbers) and even constants:

We will start with the operater in its simplest form concatenating two strings:

echo 'My favorite color is ' . 'blue.';

The above example will display a string that is the result of second string appended to the end of the first string:

My favorite color is blue.

The string concatenation operator can also be used with variables. In the following example the value of the $myString variable is appended to the end of the string:

$myString = "red";

echo 'My favorite color is ' . $myString;

We can also reference constants (see PHP Constants for details on using constants in PHP) when using concatenation:

define (MY_COLOR, "Green");

echo 'My favorite color is ' . MY_COLOR;

The above example will result in the following output:

My favorite color is Green.

Concatenation of Numbers and Strings in PHP

We mentioned at the begining of this section that it is also possible to mix numbers and strings in a concatenation operation to create strings. For example we can include the number 6 in our string as follows:

echo 6 . ' is my lucky number';

The above example will create output as follows:

6 is my lucky number

We can also perform a calculation and have the result included in the concatenation:

echo 6 + 5 . ' is my lucky number'

In this example the mathematical operation will be evaluated before the concatenation, thereby producing:

11 is my lucky number

It is important to note an issue when dealing with strings and numbers. While the above works fine because we began the expression with the addition, something very different happens when we have the addition afer the string:

echo 'My Lucky number is ' . 6 + 5;

The above will produce unexpected results (typically it will output just the number 5). The reason for this is because we have asked PHP to take a string (My Luck number is ), append the number 6 to it (to produce My Lucky number is 6) and then finally arithmetically add the number 5 to the string (which doesn't make a lot of sense). To resolve this issue we need to tell the PHP pre-processor to perform the addition (6 + 5) before performing the concatenation. We can achieve this by surrounding the addition expression in parentheses. Therefore the modified script:

echo 'My Lucky number is ' . (6 + 5);

will now produce the desired output:

My Lucky number is 11

Through the use of parentheses around the addition expression we have changed the operator precedence for that expression. We will cover operator precedence in more detail later in this chapter.

PHP Execution Operator