0

while ループの途中で mysql_fetch_array ポインタを移動するにはどうすればよいですか? このようなもの:

 while ($subject = mysql_fetch_array($subject_qry))
{
 $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>";
  next($subject);
     $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>";
  return $output;
    }
4

3 に答える 3

1

あなたの例について意味をなさないことがいくつかあります。まず、結果を取得するときに mysql_fetch_array で名前を使用することはできません。Mysql_fetch_array は、列名ではなく数値インデックスを使用します。2 つ目は、ループする while ステートメント内から値を返さないことです。ループを進めながら、文字列を構築するかエコーします。

次のようなことを試しましたか:

$counter = 1;
while ($subject = mysql_fetch_array($subject_qry)) {
    echo "<div class=\"left\" id=\"{$subject[0]}\"></div>";
    mysql_data_seek($subject_qry,$counter);
    $subject = mysql_fetch_array($subject_qry);
    echo "<div class=\"right\" id=\"{$subject[0]}\"></div>";
    $counter=$counter+2;
}
于 2012-06-11T02:17:26.197 に答える
1

これはどう:

$counter = 0;
while ($subject = mysql_fetch_array($subject_qry))
{
  if ($counter % 2 == 0)
  {
     $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>";
  }
  else
  {
     $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>";
  }
  // do something with $output here...
  $counter ++;
}

または、ブール値を使用して同じ結果を得ることができます。

$left = true;
while ($subject = mysql_fetch_array($subject_qry))
{
  if ($left)
  {
     $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>";
  }
  else
  {
     $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>";
  }
  // do something with $output here...
  $left = !$left;
}
于 2012-06-10T20:29:47.853 に答える
0

データベースからデータを抽出している間は、これを行うことはできません。次の行をmysql_fetch_array()まだ読んでいないので、次の行にスキップすることはできません。

配列の「インデックス」を操作するには、最初にすべての結果を配列に入力する必要があります。mysql_fetch_array()または、ループ内で追加を実行して、次の行を読み取ることもできます。

于 2012-06-10T20:02:09.550 に答える