Удобное получение значения элемента массива на любом уровне вложенности
Для быстрого и удобного получения значения элемента массива на любом уровне вложенности мы будем использовать 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-нотацию.
Данная функция также может быть использована для сортировки многомерного массива по значению ключа на любом уровне вложенности. Подробнее о такой сортировке можно прочитать в этой статье.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий