php数组操作 - 转置数据

时间:2016-03-31 15:06:11

标签: php arrays

我在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,Name,2016/01/16数量,2016/01/16销售,2016/01/17数量,2016/01/17销售额
1,TestPrd1,1,2,3,4
2,TestPrd2,5,6,7,8

成为:

ID,名称,数量,销售日期
1,TestPrd1,1,2,2016 / 1月16日
1,TestPrd1,3,4,2016 / 1月16日
2,TestPrd2,5,6,2016 / 1月17日
2,TestPrd2,7,8,2016 / 1月17日

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

关于什么是解决这个问题的最佳方法的任何想法?

1 个答案:

答案 0 :(得分:0)

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