2013-01-08 93 views
0

我很难让这个逻辑得到我的头脑。 (我已经完全重写的数据,因为它的工作的事情,但,该结构是一样的。)将多维数组转换为表

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

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

创建一个行/列数组来覆盖值和标题,然后迭代每个数组。 – Kermit

回答

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。