Home  >  Article  >  Backend Development  >  How to Transpose a Columnar Data Structure into Row-based Format in PHP?

How to Transpose a Columnar Data Structure into Row-based Format in PHP?

Linda Hamilton
Linda HamiltonOriginal
2024-10-25 10:16:02179browse

How to Transpose a Columnar Data Structure into Row-based Format in PHP?

Reordering Multidimensional Columnar Data into Row-based Structure

Given an associative array with column-oriented data, the task is to transpose it into a multidimensional array consisting of rows. The data in the original array is arranged by columns, and the goal is to merge the values from the same column into rows.

Original Array:

$where = [
    'id' => [
        12,
        13,
        14
    ],
    'date' => [
        '1999-06-12',
        '2000-03-21',
        '2006-09-31'
    ]
];

Desired Output:

$comb = [
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
];

Solution:

One effective way to achieve this data restructuring is to iterate through the values of each column using a loop and combine them into an array for each row. Here's an example:

<code class="php">$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = [$id, $where['date'][$key]];
}</code>

array_column() Approach:

An elegant alternative to the loop-based solution is to use the array_column() function, which extracts a specific column from a multidimensional array.

<code class="php">$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = array_column($where, $key);
}</code>

The array_column() function returns the specified column as an array, which can then be combined with the values from the corresponding row.

Output:

Both solutions will produce the desired output:

[
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
]

The above is the detailed content of How to Transpose a Columnar Data Structure into Row-based Format in PHP?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn