Для быстрого и удобного получения значения элемента массива на любом уровне вложенности мы будем использовать dot-нотацию, а также рекурсивный обход многомерного массива.

Код функции:

<?php

function array_get($array, $key, $default = null)
{
    if (!is_array($array)) {
        return $default;
    }

    if (array_key_exists($key, $array)) {
        return $array[$key];
    }

    $key = explode('.', $key);
    $innerKey = array_shift($key);

    if (array_key_exists($innerKey, $array)) {
        $array = $array[$innerKey];
    } else {
        return $default;
    }

    return array_get($array, implode('.', $key));
}

Функция разбивает ключ на составные части и использует рекурсию для обхода всего многомерного массива.

Например, у нас есть следующий многомерный массив:

<?php

$example = [
    'foo' => [
        'bar' => 100,
    ],
];

Используя ключ foo.bar, мы получим значение 100. То есть:

<?php

echo array_get($example, 'foo.bar'); // выведет 100

Вложенность массива при этом может быть какой угодно, главное правильно составить ключ, используя dot-нотацию.

Данная функция также может быть использована для сортировки многомерного массива по значению ключа на любом уровне вложенности. Подробнее о такой сортировке можно прочитать в этой статье.