[PHP-users 26195] 重複データの非表示

ムラカミ zrp33 @ yahoo.co.jp
2005年 7月 17日 (日) 22:26:22 JST


こんばんは、ムラカミと申します。
PHPは今年に入ってから始めたばかりの初心者ですが、よろしくお願いします。

早速ですが、以下のようなデータ(test.dat)があります。
バージョンはPHP4.03で、データを整形する作業をしています。

================================
1,desk,red,S
2,desk,blue,S
3,desk,red,M
4,desk,blue,M
5,desk,green,M
6,chair,red,S
7,chair,blue,S
8,chair,green,S
9,chair,blue,M
10,chair,white,L
================================

このデータを以下のような表にするにはどのようにしたら良いのでしょうか?

================================
name | color          | size
--------------------------------
desk  | red,blue,green    | S,M
--------------------------------
chair | red,blue,green,white | S,M,L
================================

まず、「name」を親キーにし、ループをかけることで「name」の重複を表示させないようには出来たのですが、「color」と「size」の部分がどうもうまくいきません。
同じものがどんどん重複し、データ数分の行が出来上がります。
稚拙なコードですいません。

<?
echo "<table border=1>";
echo "<tr><td>name</td><td>color</td><td>size</td></tr>";
$log = file('test.dat');
for ($i=1; $i<count($log); $i++) {
  list($no,$name,$color,$size) = explode(",", $log[$i]);
  if (!$oya || $oya != $name) {
   echo "<tr><td>$name</td>"; // 親(先頭)データの部分
   $oya = $name;
  }
  $color2 .= $color . ' / '; // この子データからの部分がどうもうまくいきません。
  $size2 .= $size . ' / ';
  echo "<td>$color2</td>";
  echo "<td>$size2</td></tr>";
}
echo "</table>";
?>

どうぞお力添え、アイデア、ご助言のほどよろしくお願いします。

ムラカミ




PHP-users メーリングリストの案内