2013-01-08 94 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。