将多维数组转换为表

时间:2013-01-08 17:02:05

标签: php

我很难理解这个逻辑。 (我完全重写了数据,因为它是一个工作的东西。但是,结构是一样的。)

我有一个看起来像这样的文本文件:

Ace
Hammer  12
Nails   4
Screwdriver  9

Home Depot
Nails 3
Screwdriver 11
Sawzall 43

Lowes
Hammer  10
Nails 5
Sawzall 42
Sledge  14

因此,有些商店的商品和商品都有价格。我能够把它拉成一个看起来像这样的数组:

array(3) {
  ["Ace"]=>
  array(3) {
    [0]=>
    array(2) {
      [0]=>
      string(5) "Hammer"
      [1]=>
      string(1) "12"
    }
    [1]=>
    array(2) {
      [0]=>
      string(5) "Nails"
      [1]=>
      string(1) "4"
    }
    [2]=>
    array(2) {
      [0]=>
      string(5) "Screwdriver"
      [1]=>
      string(1) "9"
    }

我想格式化HTML表中的数据,如下所示:

                Ace     Home Depot      Lowes

Hammer          12          x               10
Nails           4           3               5
Screwdriver     9           11              x
Sawzall         x           43              42
Sledge          x           x               14

由于每个商店都会有不同的商品,我想我必须创建一个商品数组并通过array_unique运行它。在那之后,它有点崩溃。我一直在尝试各种级别的嵌套循环,但我无法做任何工作。感谢您编写此代码的任何帮助。

1 个答案:

答案 0 :(得分:1)

你必须把它分解成更小的部分。就像njk在他的评论中提到的那样,你想要从处理表头开始,你可以手动编写。然后您所做的就是以下代码:

 <td>Hammer</td>
 <td>12</td>
 <td>x</td>
 <td>10</td>

然后横跨水平轴同样的事情。因此,您应该能够编写一个带有2个输入的函数,第一个是第一列的文本,然后是一个为下一列解析出来的数组,所以类似

 function parseArray($item, $array)
 {
      print '<tr>';
      print '<td>' . $item . '</td>';
      foreach($array as $item)
      {
           print '<td>' . $item . '</td>';
      }
      print '</tr>';
 }

然后,您可以在迭代初始循环时递归调用parseArray。