【问题标题】:PHP Super Complicated Associative Array Parsing to HTML Table FormatPHP 超复杂关联数组解析为 HTML 表格格式
【发布时间】:2013-01-23 02:28:04
【问题描述】:

我试图弄清楚如何解析我从数据库数据构建的关联数组,以便生成我正在寻找的 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 是必需的,但仅此而已。

【问题讨论】:

    标签: php foreach associative-array


    【解决方案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";
    
        }
        }
    

    【讨论】:

    • 诀窍是一次通过数组的每个阶段工作。所以通过你的第一个循环,让它显示你想要的年度标题。然后一旦正确地循环你的周,一旦它正确地显示你的周等等,然后就可以通过
    【解决方案2】:

    我尝试使用多个 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>"; } }

            }
    

    }

    【讨论】:

      猜你喜欢
      • 2012-10-10
      • 1970-01-01
      • 2014-05-17
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      相关资源
      最近更新 更多