[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