How to transpose an array in PHP with irregular subarray size?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function transposeCsvData($data)
{
    $ct=0;
    foreach($data as $key => $val)
    {
        //echo count($val);
        if($ct< count($val))
            $ct=count($val);
        }
    //echo $ct;
    $blank=array_fill(0,$ct,array_fill(0,count($data),null));
    //print_r($blank);
 
    $retData = array();
    foreach ($data as $row => $columns)
    {
        foreach ($columns as $row2 => $column2)
        {
            $retData[$row2][$row] = $column2;
            }
        }
    $final=array();
    foreach($retData as $k=>$aval)
    {
        $final[]=array_replace($blank[$k], $aval);
       }
    return $final;
    }

Test Code

1
2
3
4
5
6
$a[]=array("name","john","sam","patrick");
$a[]=array("color","orange","green");
$a[]=array("bikes","suzuki","audi","mercedes","bmw","volks","rover");
$a[]=array("techgiants","samsung","amazon");
 
print_r(transposeCsvData($a));

Output

Array
(
    [0] => Array
        (
            [0] => name
            [1] => color
            [2] => bikes
            [3] => techgiants
        )
 
    [1] => Array
        (
            [0] => john
            [1] => orange
            [2] => suzuki
            [3] => samsung
        )
 
    [2] => Array
        (
            [0] => sam
            [1] => green
            [2] => audi
            [3] => amazon
        )
 
    [3] => Array
        (
            [0] => patrick
            [1] =>
            [2] => mercedes
            [3] =>
        )
 
    [4] => Array
        (
            [0] =>
            [1] =>
            [2] => bmw
            [3] =>
        )
 
    [5] => Array
        (
            [0] =>
            [1] =>
            [2] => volks
            [3] =>
        )
 
    [6] => Array
        (
            [0] =>
            [1] =>
            [2] => rover
            [3] =>
        )
 
)

Posted

in

by

Tags:

Comments

2 responses to “How to transpose an array in PHP with irregular subarray size?”

  1. […] 测试和输出参考:https : //tutes.in/how-to-transpose-an-array-in-php-with-irregular-subarray-size/ […]

Leave a Reply

Your email address will not be published. Required fields are marked *