# PHP Programming/Nuts and Bolts
## The Examples
### Example 1 - Basic arithmetic operators

This example makes use of the five basic operators used in mathematical expressions. These are the foundation of all mathematical and string operations performed in PHP.
| add | subtract | multiply | divide | assign |
The five mathematical operators all function identically to those found in C++ and Java
PHP Code:
PHP Output:
HTML Render:
This is of course not the desired result.
There are two code options that perform the opposite of the assign (=) operator. The keyword null should be used for variable nullification, which is actually used with the assign operator (=) in place of a value. If you want to destroy a variable, the unset language construct is available.
or
Apart from that, the powers of 10 can be introduced with the letter "e":
The number formatting is realized by number_format: number of decimals, decimal separator and thousand separator. Example:

### Example 2 - String concatenation

This example demonstrates the concatenation operator (.), which joins together two strings, producing one string consisting of both parts. It is analogous to the plus (+) operator commonly found in C++ string class (see STL), Java, JavaScript, Python implementations.
Code:
Output:
As we all know, or for those new to programming will soon find it, programmers are always searching for "tighter code". Simply put, we pride ourselves in doing the most work with the fewest keystrokes. With that in mind, here's a trick that can save those precious keystrokes: concatenate and assign at the same time. It's easy. Let's take the same example as above.
Code:
Output:
You just saved 8 keystrokes with the exact same output. Big deal? Imagine having to do that with 100 lines of template code like I did recently. Yes, it's a big deal. By the way, if you change the implementation without changing the output, that's known as refactoring. Get comfy with that term. You'll be using it a lot. See more examples of compound assignments below.

### Example 3 - Shortcut operators

This snippet demonstrates self-referential shortcut operators. The first such operator is the ++ operator, which increments $x (using the postfix form) by 1 giving it the value 2. After incrementing $x, $y is defined and assigned the value 5.
The second shortcut operator is *=, which takes $y and assigns it the value $y*$x, or 10.
After initializing $z to 180, the subsequent line performs two shortcut operations. Going by order of operations (see manual page below), $y is decremented (using the prefix form) and divided into $z. $z is assigned to the resulting value, 20.
Code:
Output:

## New Concepts
### Operators

An operator is any symbol used in an expression used to manipulate data. The seven basic PHP operators are:
* = (assignment)
* + (addition)
* - (subtraction)
* * (multiplication)
* / (division)
* % (modulus)
* . (concatenation)
In addition, each of the above operators can be combined with an assignment operation, creating the operators below:
* += (addition assignment)
* -= (subtraction assignment)
* *= (multiplication assignment)
* /= (division assignment)
* %= (modulus assignment)
* .= (concatenation assignment)
These operators are used when a variable is added, subtracted, multiplied or divided by a second value and subsequently assigned to itself.
and
There are also increment and decrement operators in PHP.
* ++ (increment)
* -- (decrement)
These are a special case of the addition and subtraction assignment operators.
Code:
Output:
While this is perfectly legal in PHP, it is somewhat lengthy for an operation as common as this. It can easily be replaced by the increment operator, shortening the statement.
Code:
Output:
For a more in-depth overview of PHP's operators, including an explanation of bitwise operators, refer to the manual link below.

#### Precedence

Precedence determines the priority given to certain operators to be performed earlier in a statement. If an operator has higher precedence, it doesn't mean that it is of greater importance; the opposite can often be true.

##### Associativity

When multiple operators occur that have the same precedence (whether multiple instances of the same operator or just different operators with the same precedence), it becomes important to consider the associativity: whether right (to left), left (to right), or non-associative.

##### Examples where associativity is irrelevant

In certain cases (as in the example below), especially where the same operator is present, the associativity may make no difference to the result.
The following...
...with its left associativity is equivalent to:
However, in this case, right associativity would have produced the same result:

##### Examples where associativity is relevant in PHP (but not mathematically)

In mathematics, it may be considered irrelevant in which direction a calculation is performed for operators with the same precedence.
For example, the following...
...is equivalent to this (left associative) statement:
And, if this were considered according to human conventions in mathematical calculations, the following equivalent right associative expression would produce the same result:
However, since we are dealing with a linear computer language that doesn't know to convert the "2" into a negative number and group it with the "8" before adding it to the "3" (and then the "5"), if PHP were to perform the following expression in a strict right associative manner, the following (mistaken) outcome would occur:
Thus, the associativity is relevant and should be memorized (though it is generally good practice to make one's groupings explicit anyhow—both to avoid mistakes and to improve readability for others looking at the code).
Similar problems occur with multiplication and division. Although with human convention, all adjacent multiplication and division groups would have the multiplication performed at the numerator level and the division at the denominator level, the PHP interpreter does not know to do this, so it is bound to set the left(-to-right) convention when explicit groupings (via parentheses—that have highest precedence) have not been made:
This is equivalent to the left associative:
However, as with the addition/subtraction example above, performing this by right associativity (in a strictly reverse linear fashion) does not produce the same (intended) result:

## Newline and Other Special Characters

Both of the below examples make use of the newline character (\n, \r\n or \r, basing on the OS) to signify the end of the current line and the beginning of a new one.
Code:
Output:
Notice: the line break occurs in the output wherever the\n occurs in the string in the echo statement. However, a\n does not produce a newline when the HTML document is displayed in a web browser. This is because the PHP engine does not render the script. Instead, the PHP engine outputs HTML code, which is subsequently rendered by the web browser. The linebreak \n in the PHP script becomes HTML whitespace, which is skipped when the web browser renders it (much like the whitespace in a PHP script is skipped when the PHP engine generates HTML). This does not mean that the\n operator is useless; it can be used to add whitespace to your HTML, so if someone views the HTML generated by your PHP script they'll have an easier time reading it.
In order to insert a line-break that will be rendered by a web browser, you must instead use the <br /> tag to break a line.
Notice: The newline is \n for Linux/Unix-based systems, \r\n for Windows and \r for Mac's (until 1996, where MkLinux that bases on Linux came to the market).
The functionnl2br is available to automatically convert newlines in a string to <br /> tags.
PHP Code:
PHP Output:
HTML Render:
Other special characters include the ASCIINUL (\0) - used for padding binary files, tab (\t) - used to display a standard tab, and return (\r) - signifying a carriage return. Again, these characters do not change the rendering of your HTML since they add whitespace to the HTML source. In order to have tabs and carriage returns rendered in the final web page, &tab; should be used for tabs and <br /> should be used for a carriage return.

## Input to PHP

PHP has a set of functions that retrieve input. If you are using standard input (such as that from a command-line), it is retrieved using the basic input functions:
Or:

### Web servers

On Web servers, information sent to a PHP app may either be a GET operation or a POST operation.
For a GET operation, the parameters are sent through the address bar. Parameters within the bar may be retrieved by using accessing $_GET['parameter']. On a POST operation, submitted input is accessed by $_POST['parameter'].
A more generic array, $_REQUEST['parameter'] contains the contents of $_GET, $_POST, and $_COOKIE.

## For More Information

* PHP Manual: Operators
* PHP Manual: Expressions
* PHP Manual: Strings