2013-02-07 38 views
0

我想弄清楚如何解析我從數據庫數據中構建的關聯數組,這樣我就可以生成我正在尋找的html表格佈局。PHP超級複雜的關聯數組解析爲HTML表格格式

關聯數組結構如下:

Array 
(
    [2013] => Array 
    (
     [1] => Array 
      (
       [Total] => Array 
        (
         [validleads] => 7327 
         [conversions] => 9856 
         [bookings] => 2449 
        ) 
        ... more types for this week 
       [PPC] => Array 
        (
         [validleads] => 884 
         [conversions] => 1109 
         [bookings] => 605 
        ) 
      ) 
      .. more weeks for 2013 
    ) 
    [2012] => Array 
    (
     [1] => Array 
      (
       [Total] => Array 
        (
         [validleads] => 9423 
         [conversions] => 12459 
         [bookings] => 2629 
        ) 
       [PPC] => Array 
        (
         [validleads] => 955 
         [conversions] => 1237 
         [bookings] => 601 
        ) 
    ) 
) 

因此,有一個全局陣列($data),其包含用於每個年和在陣列中每一年的陣列存在用於每星期的陣列這一年又有一週的數字加上總數。

表結構最好是

| Week | Total 2013 | Total 2012 | PPC 2013 | % PPC 2013 | PPC 2012 | % PPC 2012 | Other types 2013 | % Other types 2013 | Other types 2012 | % Other types 2012 
| 01 | 7327 | 9423 | 884 | 12.06% | 955  | 10.13% |     |     |     |        

的百分比只是通過採取數字爲那個星期的一年,將其除以全年總數的那個星期再乘以100

制定

我想要生成的表格佈局是每年生成一個表格行,每年每週生成一個表格行,以及每一年中每週的總數以及這一週中每個類型的總數當年整週的總數......

對不起,如果這很複雜....

問題是我只是不能想到如何產生我想要的HTML表格格式。

我知道一些foreach的是必需的,但這是我所知道的。

回答

1

就像這樣你需要一點工作基本上你必須擺放你的表有點不同,它的工作/看起來不錯,但應該是可行的。下面的代碼並不完美,但希望能幫助你解決問題。

for ($i=0;$i<count($data);$i++) { 
    //initial loop for year 
    echo "Year = ".$data[$i]."<br />"; 
    for ($z=0;$z<count($data[$i]);$z++) { 
    //secondary loop for year 
    echo "Week =".$data[$i][$z]."<br />"; 
    //no need to loop through final array if its always jsut total and ppc if its variable on the final loop another for will be needed though 
    echo "Totals: ".$data[$i][$z]['Total']['validleads']." etc etc"; 
    echo "Totals: ".$data[$i][$z]['PPC']['validleads']." etc etc"; 

    } 
    } 
+0

乾杯,戴夫,會給它一個鏡頭。 – martincarlin87

+1

訣竅是一次通過數組的每個階段。因此,通過你的第一個循環,讓它顯示你想要的年度標題。那麼一旦它正確地顯示你的星期等等,然後一遍一遍地循環你的周 – Dave

0

我嘗試使用多種的foreach它亙古不變的你問什麼打印您陣列,但它會給你一些想法如何使用的foreach解析陣列請看看

foreach($complexArray as $k =>$v) { echo $k."=>"; foreach($v as $kx=> $vx) { echo $kx."=> "; foreach($vx as $ky =>$vy) { echo $ky.":=> "; foreach($vy as $kz =>$vz) { echo $kz."=>".$vz."<br>"; } }

 } 

}