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で実行する必要があると考えました。その後、それは一種の崩壊します。さまざまなレベルのネストされたループを試してきましたが、何も機能しませんでした。このコードを書くのに助けていただければ幸いです。

4

1 に答える 1

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 を再帰的に呼び出すことができます。

于 2013-01-08T17:25:16.857 に答える