5.3.1 Problem
You want to
assign a default value to a variable that doesn't already have a value. It often
happens that you want a hardcoded default value for a variable that can be
overridden from form input or through an environment variable.
5.3.2 Solution
if (! isset($cars)) { $cars = $default_cars; }
$cars = isset($_REQUEST['cars']) ? $_REQUEST['cars'] : $default_cars;
5.3.3 Discussion
Using isset( ) is essential when assigning default
values. Without it, the nondefault value can't be 0 or anything else
that evaluates to false. Consider this assignment:
$cars = $_REQUEST['cars'] ? $_REQUEST['cars'] : $default_cars;
If $_REQUEST['cars'] is 0, $cars is
set to $default_cars even though 0 may be a valid value for
$cars.
You can use an array of defaults to set multiple default values
easily. The keys in the defaults array are variable names, and the values in the
array are the defaults for each variable:
$defaults = array('emperors' => array('Rudolf II','Caligula'),
'vegetable' => 'celery',
'acres' => 15);
foreach ($defaults as $k => $v) {
if (! isset($GLOBALS[$k])) { $GLOBALS[$k] = $v; }
}
Because the variables are set in the global namespace, the
previous code doesn't work for setting function-private defaults. To do that,
use variable variables:
foreach ($defaults as $k => $v) {
if (! isset($$k)) { $$k = $v; }
}