home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomePHP CookbookSearch this book

Chapter 5. Variables

5.1. Introduction

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())) { .. }


Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.