php数组操作-转置数据


php array manipulation - transpose data

我在php:中有一个这种格式的数据数组

Array
(
 [0] => Array
        (
    [A] => ID
    [B] => Name
    [C] => 2016/01/16 Qty
    [D] => 2016/01/16 Sales
    [E] => 2016/01/17 Qty
    [F] => 2016/01/17 Sales
        )
 [1] => Array
        (
    [A] => 1
    [B] => TestPrd1
    [C] => 1
    [D] => 2
    [E] => 3
    [F] => 4
        )
 [2] => Array
        (
    [A] => 2
    [B] => TestPrd2
    [C] => 5
    [D] => 6
    [E] => 7
    [F] => 8
        )
)

我想要一个修改数组的函数,如下所示:

Array
(
 [0] => Array
        (
    [A] => ID
    [B] => Name
    [C] => Qty
    [D] => Sales
    [E] => Date
        )
 [1] => Array
        (
    [A] => 1
    [B] => TestPrd1
    [C] => 1
    [D] => 2
    [E] => 2016/01/16
        )
 [2] => Array
        (
    [A] => 1
    [B] => TestPrd1
    [C] => 3
    [D] => 4
    [E] => 2016/01/17
        )
 [3] => Array
        (
    [A] => 2
    [B] => Testprd2
    [C] => 5
    [D] => 6
    [E] => 2016/01/16
        )
 [4] => Array
        (
    [A] => 2
    [B] => Testprd2
    [C] => 7
    [D] => 8
    [E] => 2016/01/17
        )
)

或者简单地说(第一行包含标题):

ID,名称,2016/01/16数量,2016/01-16销售额,2016/01/17数量,2016/1/17销售额
1、测试Prd1,1,2,3,4
2,测试Prd2,5,6,7,8

成为:

ID、名称、数量、销售额、日期
1,测试日期2016年1月1日至2日
1,测试日期:2016年1月1日,3,4
2,测试计划2,5,6 2016/01/17
2,TestPrd2,7,82016/01/17

我有数千行(这是我的数据的一个非常简化的子集,说明了这个问题),目的是从excel文件中读取它们,并将它们放入mysql中。

关于解决这个问题的最佳方法是什么,有什么想法吗?

// Create a new array to hold data
$dataonlyarray = array();
$dataonlyarray2 = array();
$dataonlyarray3 = array();
$dataonlyarray4 = array();
// Start filling the new array with data
        for ($i = 0; $i < sizeof($main_prod_arr); $i++) {
            $dataonlyarray2[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn);
            $dataonlyarray3[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn);          
            } 
        for ($i = 0; $i < sizeof($main_prod_arr); $i++) {
            array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]);    
            array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]+1);
            array_push($dataonlyarray2[$i],$headers_arr[$startingdatecolumn]);          
            }   
        for ($i = 0; $i < sizeof($main_prod_arr); $i++) {
            array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+2);
            array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+3);
            array_push($dataonlyarray3[$i],$headers_arr[$startingdatecolumn+3]);        
            }       
            $dataonlyarray4[] = array_merge($dataonlyarray2,$dataonlyarray3);
        array_push($dataonlyarray,$dataonlyarray4);