Skip to content

Instantly share code, notes, and snippets.

@danieldunderfelt
Last active August 29, 2015 14:25
Show Gist options
  • Save danieldunderfelt/c73745717bc0a7dabc5c to your computer and use it in GitHub Desktop.
Save danieldunderfelt/c73745717bc0a7dabc5c to your computer and use it in GitHub Desktop.
PHP retrieve array key safely, while waiting for the ?? operator
function safe($array)
{
return function($key, $fallback) use ($array)
{
if(!is_array($key))
{
return isset($array[$key]) ? $array[$key] : $fallback;
}
if(!isset($array[$key[0]]))
{
return $fallback;
}
$path = $array;
foreach($key as $keyVal)
{
if(!isset($path[$keyVal])) {
$path = $fallback;
break;
}
$path = $path[$keyVal];
}
return $path;
};
}
/*
Use:
$safe = safe($array);
$value = $safe('key', 'value not found');
For nested keys:
$safe = safe($array);
$value = $safe(['key1', 0, 'key3'], 'value not found');
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment