0

Use PHPExel to parse XLS file. It does the following array structure:

Array(

    [0] => Array(
            [A] => City 1
            [B] => NULL
            [C] => NULL
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
        )

    [1] => Array(
            [A] => City 1 - Sell Department Phone
            [B] => NULL
            [C] => 123-123-123
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
          )

    [2] => Array(
            [A] => Stock 1
            [B] => Stock 1 Address
            [C] => Stock 1 Phone
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
          )

    [3] => Array(
            [A] => Stock 2
            [B] => Stock 2 Address
            [C] => Stock 2 Phone
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
          )

    // City Name 2 begins
    [4] => Array(
            [A] => City 2
            [B] => NULL
            [C] => NULL
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
        )
    [5] => Array(
            [A] => City 2 - Sell Department Phone
            [B] => NULL
            [C] => 123-123-124
            [D] => NULL
            [E] => NULL
            [F] => NULL
            [G] => NULL
          )
    // and so on...      
)

The structure above isn't handy for processing so I need to convert it to the following form:

Array(

  [0] => Array(
    [City 1] => Array(
      [sell] => City 1 - Sell Department Phone
      [stocks] => Array(
        [Stock 1] => Array(
          [address] => Stock 1 Address
          [phone] => Stock 1 Phone
        )

        [Stock 2] => Array(
          [address] => Stock 2 Address
          [phone] => Stock 2 Phone
        )
      )
    )
  )

  [1] => Array(
    [City 2] => Array(
      [sell] => City 2 - Sell Department Phone
      [stocks] => Array(
        [Stock 1] => Array(
          [address] => Stock 1 Address
          [phone] => Stock 1 Phone
        )
        [Stock 2] => Array(
          [address] => Stock 2 Address
          [phone] => Stock 2 Phone
        )
      )
    )
  )
)

My code so far:

$output = array();

foreach ($sheetData as $key => $data) {

  // Filter out empty array items
  $data = array_filter($data);

  if (count($data) == 1 && $data['A']) {
   // Get "City" name
   $output[$key]['city'] = $data['A'];
  }

  // Stuck here
}

Please help me with this matter

1 Answer 1

1

You can try using array_chunk to get all indexes corresponding to a city in one array. Then, for that array, manually construct the new array.

$final_array = array();
$arr = array_chunk( $old_array, 4 );
foreach( $arr as $key => $city ) {
    $final_array[$key]['sell'] = $city[1]['A'];
    //and so on...
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.