Basics
Variables in PHP are represented by a dollar sign followed by the
name of the variable. The variable name is case-sensitive.
Variable names follow the same rules as other labels in PHP. A
valid variable name starts with a letter or underscore, followed
by any number of letters, numbers, or underscores. As a regular
expression, it would be expressed thus:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Note:
For our purposes here, a letter is a-z, A-Z, and the ASCII
characters from 127 through 255 (0x7f-0xff).
Note:
$this is a special variable that can't be
assigned.
For information on variable related functions, see the
Variable Functions Reference.
By default, variables are always assigned by value. That is to say,
when you assign an expression to a variable, the entire value of
the original expression is copied into the destination
variable. This means, for instance, that after assigning one
variable's value to another, changing one of those variables will
have no effect on the other. For more information on this kind of
assignment, see the chapter on Expressions.
PHP also offers another way to assign values to variables:
assign by reference.
This means that the new variable simply references (in other words,
"becomes an alias for" or "points to") the original variable.
Changes to the new variable affect the original, and vice versa.
To assign by reference, simply prepend an ampersand (&) to the
beginning of the variable which is being assigned (the source
variable). For instance, the following code snippet outputs 'My
name is Bob' twice:
One important thing to note is that only named variables may be
assigned by reference.
It is not necessary to initialize variables in PHP however it is a very
good practice. Uninitialized variables have a default value of their type
- FALSE, zero, empty string or an empty array.
Example #1 Default values of uninitialized variables
<?php
echo ($unset_bool ? "true" : "false"); // false
$unset_int += 25; // 0 + 25 => 25
echo $unset_string . "abc"; // "" . "abc" => "abc"
$unset_array[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
?>
Relying on the default value of an uninitialized variable is problematic
in the case of including one file into another which uses the same
variable name. It is also a major security risk with register_globals turned on. E_NOTICE level error is issued in case of
working with uninitialized variables, however not in the case of appending
elements to the uninitialized array. isset() language
construct can be used to detect if a variable has been already initialized.