问题
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...
回答1:
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])
回答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.
来源:https://stackoverflow.com/questions/14086980/php-return-if-isset