PHP Variables Establishing a Default Value - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript PHP Variables Establishing a Default Value - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

Breaking

Post Top Ad

Post Top Ad

Tuesday, May 21, 2019

PHP Variables Establishing a Default Value

PHP Variables




Establishing a Default Value

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.

Solution

Use isset() to assign a default to a variable that may already have a value:

           if (! isset($cars)) {
                   $cars = $default_cars;
           }

Use the ternary (a ? b : c) operator to give a new variable a (possibly default) value:

           $cars = isset($_GET['cars']) ? $_GET['cars'] : $default_cars;

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 = isset($_GET['cars']) ? $_GET['cars'] : $default_cars;


If $_GET['cars'] is 0, $cars is set to $default_cars even though 0 may be a valid value for $cars.

An alternative syntax for checking arrays is the array_key_exists() function:

           $cars = array_key_exists('cars', $_GET) ? $_GET['cars'] : $default_cars;


The one difference between isset() and array_key_exists() is that when a key exists but its value is null, then array_key_exists() returns true, whereas isset() returns false:

           $vehicles = array('cars' => null);
           // array_key_exists() returns TRUE because the key is present.
           $ake_result = array_key_exists('cars', $vehicles);

           // isset() returns values because the key's value is NULL
           $isset_result = isset($vehicles['cars']);


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 default variables private within a function. To do that, use variable variables:

           foreach ($defaults as $k => $v) {
                  if (! isset($$k)) { $$k = $v; }
           }

In this example, the first time through the loop, $k is emperors, so $$k is $emperors.



No comments:

Post a Comment

Post Top Ad