4

Possible Duplicate:
Any more concise way to set default values?

Is there a built-in php function like the following:

function isset_get($array, $key, $default = null) {
    return isset($array[$key]) ? $array[$key] : $default;
}

I don't like

$my_var = isset($my_array['some Key']) ? $my_array['some Key'] : '';

and would prefer

$my_var = isset_get($my_array, 'some Key', '');

or something similar...

Community
  • 1
  • 1
SunnyRed
  • 3,525
  • 4
  • 36
  • 57

2 Answers2

4

No. In my codebase we have several helpers of this nature. The names are pretty terrible but since they are frequently used, concision is warranted

idx($array, $key, $default) returns the $default if !isset($array[$key])

adx($array, $key, $default) like idx, but enforces that $array is actually an array and throws if not.

edx($array, $key, $default) returns the $default if !isset($array[$key]) or empty($array[$key])

Drew Hoskins
  • 4,168
  • 20
  • 23
2

Consider using array_merge. Merging will overwrite keys of each given array allowing you to override an array of default values with the given values.

$defaults = array('some Key' => 'some Default Value');
$input = array('some Key' => 'a new value');
$merged = array_merge($defaults, $input);
$value = $merged['some Key'];

This won't work correctly for numeric keys however, so you should ensure you're working with an map instead of a vector.

jmkeyes
  • 3,751
  • 17
  • 20