Accessing deeply nested array values can be cumbersome because you have to check if each level of the array exists before getting to the value you're interested in.
Well, that is not an issue if you're using PHP 7's null coalesce operator. Here is how it works.
Example one
$place = $earth ?? 'not here';
echo $place; // 'not here'
$place
will be the string 'not here'
because $earth
is not defined. No errors thrown!
Example two
$earth = [
'northAmerica' => [
'usa' => [
'pa' => [
'philadelphia' => "You've found me"
]
]
]
];
$place = $earth['europe']['france']['paris'] ?? 'not here';
echo $place; // 'not here'
$place
will be the string 'not here'
because $earth['europe']
doesn't exist.
Example three
$earth = [
'northAmerica' => [
'usa' => [
'pa' => [
'philadelphia' => "You've found me"
]
]
]
];
$place = $earth['northAmerica']['usa']['pa']['philadelphia'] ?? 'not here';
echo $place; // "You've found me"
$place
will be the string "You've found me"
PHP 5
For PHP 5, you can use array_reduce()
$earth = [
'northAmerica' => [
'usa' => [
'pa' => [
'philadelphia' => "You've found me"
]
]
]
];
$place = array_reduce(['northAmerica', 'usa', 'pa', 'philadelphia'], function($result, $index) {
if ($result && !is_null($index)) {
return (array_key_exists($index, $result)) ? $result[$index] : null;
}
}, $earth);
echo $place; // "You've found me"