2012-09-02 68 views
0

使用PHPExel解析XLS文件。它下面的數組結構:將平面陣列轉換爲多維陣列

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...  
) 

上面的結構不是很方便的處理,所以我需要將其轉換爲以下形式:

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 
     ) 
    ) 
    ) 
) 
) 

到目前爲止我的代碼:

$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 
} 

請幫我解決這個問題

回答

1

你可以嘗試使用array_chunk來獲取所有索引es對應於一個數組中的城市。然後,對於該數組,手動構建新的數組。

$final_array = array(); 
$arr = array_chunk($old_array, 4); 
foreach($arr as $key => $city) { 
    $final_array[$key]['sell'] = $city[1]['A']; 
    //and so on... 
}