Operations and Co
mparisons
$val3=(5$val1)+$val2;
This statement actually consists of three expressions: the assignment operation,
between $val3 and everything to the right of the equal sign; the addition operation between $val2 and the expression
to the left of the plus sign; and finally, the subtraction operation within parentheses. Why the parentheses? It raises the issue of
operator precedence. When an expression contains several operators, PHP has to determine in what order to perform the operat
ions. Sometimes this matters greatly. Consider:
$val1 = 2 * 4 – 3;
What value should be assigned to $val1? If w
e first multiply 2 and 4, and then subtract 3, the result would be 5. But if we first subtract 3 from 4, and then multiply that by 2
, the result would be 2. PHP has a set of precedence rules which define which operations take precedence — in this case, multiplica
tion is of higher precedence than subtraction, so in this case PHP would come up with the first interpretation, resulting in a value
of 5.
To be honest, the operator precedence rules can be quite difficult to remember. Rather than memorizing them all, often
a better approach is to use parentheses to group operations — this way, we can determine our own precedence. For example, we can u
se parentheses to determine either of the previous two interpretations:
$val1 = (2 * 4)  3;
$val1 = 2 * (4  3) ;
The first example will yield 5, while the second will yield 2. It”s usually better to use parenthetical grouping this wa
y rather than relying on PHP”s implicit precedence rules because 1) they can be difficult to remember, and 2) the above code will b
e easier to understand by a human at a later time.
String operators work with characters rather t
han numbers. And of course you can”t really add, subtract, or multiply the words “hot” and “tamale.” Then again
, maybe you can “add” them, if by that you mean string them together. In fact, this is called concatenation, and it
is the only string operator available in PHP. Rather than a plus sign, the PHP concatenation operator is a single dot, or period. I
magine that $firstName contains “Woodrow”.
$fullName = $firstName . "Wilson";
Now, $
fullName will contains “WoodrowWilson”. Whoops — we”d probably want a space between those words, something to keep i
n mind when you concatenate strings:
$fullName = $firstName . " Wilson";
Simple, indeed.
PHP”s basic assignment operator is already familiar, being a simple equal sign (=). You can also combine the e
qual sign with an arithmetic or string operator to make a “shortcut” assignment. Confused? Let”s illustrate — suppose th
at you”d like to add a value of 5 to whatever value is currently contained in $val1:
$val1 += 5;
Thus, if
$val1 was previously valued at 10, after the above statement it would contain 15. Similarly, you can use the same shortcut fo
r string concatentation, if you want to add a string to the end of an existing string. Suppose $name contains “Thelonius
“:
$name .= " Monk";
And now $name will be “Thelonius Monk”.
Comparing two values is frequently useful — is a purchase total below a certain threshold, or is does one word come bef
ore another alphabetically? PHP”s team of comparison operators is here to help! A comparison operator ultimately retu
rns either a true or a false value, depending on the result of the comparison. What you do with this result value can
vary, and we”ll see this more closely when we talk about control statements. For the examples below, let”s assume the following va
riable values:
$val1 = 15; $val2 = 7; $name1 = "Martin"; $name2 = "Michael&qu ot;;
PHP Comparison Operators
Name
Operator  Description  Examples  Yield s 

== 
Equality  Tests whether two expression s are of equal value. For strings, the two must be exactly the same. 
$val1 == $val2 $name1 == $name2 
false false 
!= 
Inequality  Tests whether two expressions are not equal, or for strings, not exactly the same. 
$val1 != $val2 $name1 != $name2 
true true 

Less than  Tests whether the lefthand expression ha s a value smaller than the righthand expression. For strings, smaller means “comes before alphabetically.” 
$val1$name1 
false true 
> 
Greater than  Tests whether the lefthand expressi on has a value greater than the righthand expression. For strings, greater means “comes after alphabetically.” 
$val1 > $val2 $name1 > $name2 
true false 

Less than or equal to  Tests whether the lefthand expression is of equal or lesser value than the righthand expression. 
$val1$name1 
true true 
>= 
Greater than or equal to  Tests whether the lefthand expression is of equal or g reater value than the righthand expression. 
$val2 >=6 $name2 >= "Manfred" 
true true 
Let”s raise the stakes: comparing t
wo values is one thing, but sometimes you need something more, such as the ability to compare several comparisons! Let”s be logi
cal about this, and use PHP”s logical operators. Suppose for example that you need to know whether $val1 i
s of lesser value than $val2, and also whether $name1 is of greater value than $name2.
Remember t
hat each comparison expression yields a true or false value. For the record, PHP does not actually possess true or false values, kno
wn as Boolean data types. Rather, PHP considers the numeric value zero (0), or the string values “0” or empty “”
to be false. Any other value, such as 1, or 3, or “cat”, is considered to be true. A logical operator compares these true
or false values. For example, using PHP”s and logical operator:
($val1 $name2)
Because this code fragment is not a full statement, there is no closing semicolon. Rather, we see parentheses grouping two expres
sions. The lefthand expression will evaluate to the value false, if we assume the example values used in the comparison operator table. The righthand expression will also be false, since “Martin” does not come after &quo
t;Michael” alphabetically. The and operator will therefore compare the values “false and false”. Because this
operator returns true only when both expressions are true, the above expression will ultimately return false. That can be hard to fo
llow, so let”s look at a summary table.
PHP Logical Operators
OperatorName  Description  Exampl e 
Yield  
and 
And  True if both lefthand and righthand expressions are true. 
(5>2) and (3>2) (2>5) and (3 >2) 
true false 
or 
Or  True if either lefthand or righthand expression is true. 
(5>2) or (2>7) ("h">"a") or (1 
true true 
xor 
Exclusive Or  True if either lefthand or righthand expression is true unless both are true. 
("ar">"ac") xor (9>2) (3==3) xor ("f"==&q uot;f") 
true false 
! 
N ot 
Negates the expression it precedes, true if the expression is not true. 
!("s mall" 
false 
Understanding all of these ope
rators can certainly be exhausting!
Just as eye fatigue sets in — a jolt! We”re about to string together everything we”ve
learned so far, with the magic of control statements. Things will get much more exciting from here on in.