2016-03-31 50 views
-1

我在PHP數據以這種格式的數組: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 
     ) 
) 

或把它簡單(第一行containes報頭):

ID,名稱,2016/1月16日數量,2016/01/16個銷售,2016/1月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日

我有成千上萬的這些行(這是我的數據的一個非常簡化的子集,說明了這個問題),目的是讀取th從一個Excel文件中獲取他們到MySQL中。

什麼是解決此問題的最佳方法的任何想法?

+1

這是什麼模式,你有嘗試過嗎?我沒有看到任何背後的邏輯。另請參閱[問]和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。 – Rizier123

+0

更新說明和數據,並提供了另一個例子 –

+0

我仍然不是100%確定如何從2行到4? – Rizier123

回答

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); 
+0

這適用於2日期,現在需要擴展到支持無限日期。 –