Variables and Data Types

  • Assign value by reference
  • Dynamic variables

Variables are used to store different kinds of data (or values). These values can be numbers, text, or much more complex data. PHP has eight basic (or primitive) types of variables.

PHP Data types

- Usually the variable type is not explicitly specified, PHP automatically converts the variable to the correct data type.

Using variables

Variables are used for storing values, data like text strings, numbers or arrays.
When a variable is declared, it can be used over and over again in your script.
Regardless of what type you are creating, all variables in PHP follow certain syntactical rules:
Variables can be assigned values using the equals sign (=).
<?php
$var_name = value;
?>

There are two ways to assign values to variables: by value and by reference.

Assign by value

The typical way to do assignments is to define by value. Value can be a number, a string (or any data type), or another variable previously defined.
<?php
$var1 = 8;                         // the value is a number
$var2 = 'coursesweb.net';      // the value is a string
$var3 = true;                      // a boolean data
$var4 = $var1;                     // the value of $var4 is 8 (the value of $var1)

echo $var4;                      // 8
?>
- The values of these variables remains intact until it is reassigned or the script has completed.

• If you assign another value to an existing variable, the new value will overwrite the old one.
<?php
$site = 'coursesweb.net';
$site = 789;                       // assigns another value, a number

echo $site;                       // 789
?>

• Variables can be printed within double quotation marks, but not within simple quotation marks. If you add a variable inside simple quotation marks, will display its name (not its value).
<?php
$name = 'Marius';
echo "Hy $name". '<br />';          // Hy Marius
echo 'Hy $name';                    // Hy $name
?>
• Dot character (.) is used to join strings.
Example:
<?php
$protocol = 'http://';
$site = $protocol . 'coursesweb.net';
echo $site;                  // http://coursesweb.net
?>

Assign value by reference

The reference approach allows the content of a variable to affect the value of another variable (previously defined), or a function to affect a variable that is not part of that function (see the lesson: Passing variable to function by reference).
To define a variable by reference, simply add the ampersand (&) character before the dollar sign ($).
<?php
$var1 = "Tutorials";                 // assigned by value
$var2 = &$var1;                      // $var1 is assigned to $var2 by reference

echo $var2;                // Tutorials

// changing the value of $var1 will modify also the $var2
$var1 = 'www.marplo.net';
echo '<br/>'. $var2;         // www.marplonet.net

// changing the value of $var2 will be transmitted to $var1 too
$var2 = 'http://coursesweb.net';
echo '<br/>'. $var1;                     // http://coursesweb.net ( because of the "by reference" )
?>
- Once a variable is assigned by reference, it is tied to its referenced variable. If one of them changes, will transfer the same change to the other one. If you change the value of $var1 will change the value of $var2 too.
Because assigning values by reference can complicate the script, it's better to avoid this.

Dynamic variables

A dynamic variable is named using two dollar signs ($$) and is associated with a normal variable that has a similar name.
The value of an usual variable gives the name (without the dollar symbol) to a second variable.
<?php
$good_people = 12;
$var_name = "good_people";
echo $$var_name;                   // 12

// assigning a value to $$var_name will change the value to $good_people
$$var_name = 'other value';
echo '<br />'. $good_people;              // other value
?>
A dynamic variable does not contain its own value. Instead, it contains the location where you can find the value, in other words, the name of another variable.
The expresions: $var_name = "good_people"; and $$var_name; make result a variable "$good_people", the value of "$$var_name" is the value of "$good_people".

- Dynamic variables, as those by reference can be confusing and it's better to avoid them.