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!