Search code examples
phparraysmergemultiple-columnssection508

PHP : merge multi arrays in sections


I load data from .xlsx sheet

And i convert it to two arrays

The first is the header columns

The second is the data columns

I did this

$c = array_combine($headers, $data);

when i print $c 

    Array
    (
    [id] => Array
        (
            [0] => 1
            [1] => 2
        )

    [f-name] => Array
        (
            [0] => Mohammed
            [1] => Ziad
        )

    [s-name] => Array
        (
            [0] => Amer
            [1] => Mohammed
        )

    [t-name] => Array
        (
            [0] => Hendy
            [1] => Shokry
        )
    [cid] => Array
        (
            [0] => 89
            [1] => 55   
        )
     )

i want to make the result like that

array(
[0] => Array(
        [id] => 0
        [f-name] => mohammed
        [s-name] => amer
        [t-name] => hendy
        [cid] => 89 
)
[1] => Array(
        [id] => 1
        [f-name] => ziad
        [s-name] => mohammed
        [t-name] => shokry
        [cid] => 55
)
)

Solution

  • try this:

    $data = array(
    'id' => array
        (
            0 => 1,
            1 => 2
        ),
    'f-name' => array
        (
            0 => 'Mohammed',
            1 => 'Ziad'
        ),
    's-name' => array
        (
            0 => 'Amer',
            1 => 'Mohammed'
        ),
    't-name' => array
        (
            0 => 'Hendy',
            1 => 'Shokry'
        ),
    'cid' => array
        (
            0 => 89,
            1 => 55   
        )
    );
    //
    $result = array();
    foreach($data as $k=>$v){
        for($i=0;$i<count($data['id']);$i++){
            //$v[$i] = ($k!='id') ?: $i;// uncomment for reset id from 0
            $result[$i][$k] = $v[$i]; 
        }
    }
    var_dump($result);
    

    result:

    array (size=2)
      0 => 
        array (size=5)
          'id' => int 1
          'f-name' => string 'Mohammed' (length=8)
          's-name' => string 'Amer' (length=4)
          't-name' => string 'Hendy' (length=5)
          'cid' => int 89
      1 => 
        array (size=5)
          'id' => int 2
          'f-name' => string 'Ziad' (length=4)
          's-name' => string 'Mohammed' (length=8)
          't-name' => string 'Shokry' (length=6)
          'cid' => int 55