Along with conditional logic,
variables are the core of what makes computer programs powerful and flexible. If
you think of a variable as a bucket with a name that holds a value, PHP lets you
have plain old buckets, buckets that contain the name of other buckets, buckets
with numbers or strings in them, buckets holding arrays of other buckets,
buckets full of objects, and just about any other variation on that analogy you
can think of.
A variable is either set or unset. A
variable with any value assigned to it, true or false, empty
or nonempty, is set. The function isset( )
returns true when passed a variable that's set. The only way to turn a
variable that's set into one that's unset is to call unset( ) on the variable. Scalars, arrays, and objects can all be
passed to unset( ). You can also pass unset( ) multiple
variables to unset them all:
unset($vegetables); unset($vegetables[12]); unset($earth, $moon, $stars);
If a variable is present in the query string of a URL, even if
it has no value assigned to it, it is set. Thus:
http://www.example.com/set.php?chimps=&monkeys=12
sets $_GET['monkeys'] to 12 and
$_GET['chimps'] to the empty string.
All unset
variables are also empty. Set variables may be empty or
nonempty. Empty variables have values that evaluate to false as a
boolean: the integer 0, the double
0.0, the empty string, the string "0", the boolean
false, an array with no elements, an object with no variables or
methods, and NULL. Everything else is nonempty. This includes the
string "00", and the string " ", containing just a space character.
Variables evaluate to either true or false.
The values listed earlier that evaluate to false as a boolean are the
complete set of what's false in PHP. Every other value is
true. The distinction between empty and false is that emptiness is only
possible for variables. Constants and return values from functions can be
false, but they can't be empty. For example, the following is valid
because $first_name is a variable:
if (empty($first_name)) { .. }
On the other hand, these two examples return parse errors
because 0 (a constant) and the return value from get_first_name(
) can't be empty:
if (empty(0)) { .. }
if (empty(get_first_name())) { .. }