[PHP-users 8431] 2重ループで1回だけ表示する方法

go php-users@php.gr.jp
Fri, 5 Jul 2002 16:40:35 +0900


こんにちは、いつもお世話になります。
井上ともうします。

MySQLなどのデータベースで検索するカラムが1カ所しかなく2個以上の同一データが 
ある場合、内部ポインタ(かな?)を
2重にループさせて下記のように解決しようとしたのですが、array_splice()でその 
内容を1回だけ表示するように1度通った
ところを2回通らないようにやりたいのですが、うまくいきません。

$res = mysql_query("select test from  table");
$count = 1;
$cont = array("sei0" => "●" , "sei1" => "▲" , "sei2" => "■");
while($row = mysql_fetch_array($res)){
    switch($row["test"])
    {
       case "$cont[sei0]":
       $res = mysql_query("select test from  table where test = '●' ");
          while(mysql_fetch_array($res)){
               echo "$rows[naiyou]-$count<br>";
               $count ++;
          }
       $count = 1;
       $cont = array_splice($cont ,??);
       break;

       case "$cont[sei1]":
       $res = mysql_query("select test from  table where test = '▲' ");
          while(mysql_fetch_array($res)){
               echo "$rows[naiyou] -$count<br>";
               $count ++;
          }
       $count = 1;
       $cont = array_splice($cont ,??);
       break;

       case "$cont[sei2]":
       $res = mysql_query("select test from  table where test = '■' ");
          while(mysql_fetch_array($res)){
               echo "$rows[naiyou]-$count<br>";
               $count ++;
          }
       $count = 1;
       $cont = array_splice($cont ,??);
       break;
    }
}
array_splice()をいれないと2重にループしていますので、たとえばtableの内容が
test  naiyou
●   まる
▲   さんかく
■   しかく
■   くろ
となっている場合、「■」が2レコードあるので結果として1レコード2回ずつ合計4回 
表示されます。
結果はこのようになってしまいます。
まる-1
さんかく-1
しかく-1
くろ-2
しかく-1
くろ-2
本来ならば
まる-1
さんかく-1
しかく-1
くろ-2
で終わらせたいのですが・・・array_splice()で解決できないのでしょうか??
また、もっと頭の良い方法がありましたらご教授いただきたいのですが、
宜しくお願いいたします。

井上 大悟
go16@mac.com