Эффективные способы свертывания общих столбцов в ассоциативных массивах PHP

Ассоциативные массивы — это фундаментальная структура данных в PHP, позволяющая хранить и извлекать данные с использованием пар ключ-значение. В некоторых сценариях может оказаться необходимым свернуть общие столбцы в ассоциативном массиве, что по сути означает объединение значений с одинаковыми ключами. В этой статье блога рассматриваются различные методы эффективного решения этой задачи и приводятся примеры кода.

Метод 1: использование цикла и временного массива
Один простой подход — перебрать ассоциативный массив с помощью цикла и сохранить объединенные значения во временном массиве. Вот пример:

function collapseArray(array $inputArray)
{
    $collapsedArray = [];
    foreach ($inputArray as $subArray) {
        foreach ($subArray as $key => $value) {
            if (!isset($collapsedArray[$key])) {
                $collapsedArray[$key] = [];
            }
            $collapsedArray[$key][] = $value;
        }
    }
    return $collapsedArray;
}
// Example usage:
$inputArray = [
    ['name' => 'John', 'age' => 25, 'location' => 'New York'],
    ['name' => 'Alice', 'age' => 30, 'location' => 'Los Angeles'],
    ['name' => 'Bob', 'age' => 27, 'location' => 'San Francisco'],
];
$result = collapseArray($inputArray);
print_r($result);

Метод 2: использование функций массива
PHP предоставляет несколько функций массива, которые могут упростить процесс свертывания общих столбцов. Функцию array_reduce()в сочетании с array_merge_recursive()можно использовать для достижения желаемого результата:

function collapseArray(array $inputArray)
{
    return array_reduce($inputArray, 'array_merge_recursive', []);
}
// Example usage:
$inputArray = [
    ['name' => 'John', 'age' => 25, 'location' => 'New York'],
    ['name' => 'Alice', 'age' => 30, 'location' => 'Los Angeles'],
    ['name' => 'Bob', 'age' => 27, 'location' => 'San Francisco'],
];
$result = collapseArray($inputArray);
print_r($result);

Метод 3: использование библиотеки SPL
Стандартная библиотека PHP (SPL) PHP предоставляет класс MultipleIterator, который можно использовать для эффективного свертывания общих столбцов:

function collapseArray(array $inputArray)
{
    $iterator = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
    foreach ($inputArray as $subArray) {
        $iterator->attachIterator(new ArrayIterator($subArray));
    }
    $collapsedArray = [];
    foreach ($iterator as $values) {
        foreach ($values as $key => $value) {
            if (!isset($collapsedArray[$key])) {
                $collapsedArray[$key] = [];
            }
            $collapsedArray[$key][] = $value;
        }
    }
    return $collapsedArray;
}
// Example usage:
$inputArray = [
    ['name' => 'John', 'age' => 25, 'location' => 'New York'],
    ['name' => 'Alice', 'age' => 30, 'location' => 'Los Angeles'],
    ['name' => 'Bob', 'age' => 27, 'location' => 'San Francisco'],
];
$result = collapseArray($inputArray);
print_r($result);

В этой статье мы рассмотрели три эффективных метода свертывания общих столбцов в ассоциативных массивах PHP. Используя циклы и временные массивы, используя встроенные функции работы с массивами или используя библиотеку SPL, вы можете эффективно объединять значения с одинаковыми ключами. Эти методы обеспечивают гибкость и оптимизируют ваш код для улучшения манипулирования данными.

Не забудьте выбрать метод, который лучше всего подходит для вашего конкретного случая использования, и учитывать такие факторы, как производительность, читаемость и удобство обслуживания. Имея в своем распоряжении эти методы, вы сможете уверенно работать с ассоциативными массивами с общими столбцами в PHP.