PHP Snippet: Array element access

A common logic pattern that's seen when dealing with GET and POST parameters in PHP is to check whether the array element exists, then set another variable to that or a default. It usually looks something like this...

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

If you don't develop with notices turned on (WHICH YOU SHOULD!) you probably haven't seen the problem that this code gets around. Simply referring to $_GET['var'] will produce a notice if it does not exist.

Code littered with the example above does not aid readability. To work around this I define a simple function that I use instead of the above block. I call it V but it is more commonly known as ifsetor.

function V(&$a, $e, $d = '')
{
  return (isset($a[$e]) ? $a[$e] : $d);
}

Using this function, the above example looks like this...

V($_GET, 'var', '');

And you can actually drop the last parameter because the default default is an empty string.

This can be used with any array, whether one of the superglobals or user-defined.

blog comments powered by Disqus