PHP how to access a deeply nested array value

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"