«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как преобразовать многомерные массивы PHP в 2D-массивы с помощью ключей точечной записи?

Как преобразовать многомерные массивы PHP в 2D-массивы с помощью ключей точечной записи?

Опубликовано 15 января 2025 г.
Просматривать:513

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

Преобразование многомерных массивов PHP в 2D-массивы с помощью ключей точечной записи.

Сведение многомерных массивов PHP в 2D-массивы с помощью ключей точечной записи может быть полезно в различные сценарии. Он позволяет беспрепятственно получать доступ к значениям вложенных массивов с помощью точечной записи, что повышает читаемость и удобство обслуживания кода.

Рекурсивная функция для преобразования вложенных массивов

К счастью, PHP предоставляет рекурсивную функцию функция, которая может элегантно выполнить это преобразование:

$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}

Объяснение:

  • Классы RecursiveIteratorIterator и RecursiveArrayIterator используются для рекурсивного обхода вложенного массива.
  • Во время каждой итерации key метода RecursiveArrayIterator используется для захвата текущего ключа array.
  • Метод getSubIterator($глубина) используется для извлечения подитератора на определенной глубине, что позволяет нам перебирать вложенные массивы.
  • Диапазон(0, $ritit- >getDepth()) создает массив глубин, проходя от самого внутреннего массива к самому внешнему.
  • The join('.', Функция $keys) объединяет ключи массива с точкой (.) в качестве разделителя, создавая ключ записи через точку.
  • Результирующая пара ключ-значение сохраняется в массиве $result.

Вывод:

Эта функция сгенерирует желаемый 2D-массив с точечной записью ключи:

$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3