循环查询结果集时维护计数器

发布于 2024-11-09 07:50:27 字数 209 浏览 0 评论 0原文

我有以下问题:

$counter = 1;   
while ($row = mysql_fetch_assoc($result)) {
    $counter2 = $counter++;
    echo $counter2 . $row['foo'];
}

是否有更简单的方法可以为每个结果获得 1,2,3 等,或者这是最好的方法?

I have the following:

$counter = 1;   
while ($row = mysql_fetch_assoc($result)) {
    $counter2 = $counter++;
    echo $counter2 . $row['foo'];
}

Is there an easier way to get 1,2,3 etc for each result or is this the best way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄与心 2024-11-16 07:50:27

你不需要 $counter2。 $counter++ 没问题。如果您使用前增量而不是后增量,您甚至可以在与 echo 相同的行上执行此操作。

$counter = 0;   
while($row= mysql_fetch_assoc($result)) {
    echo(++$counter . $row['foo']);
}

You don't need $counter2. $counter++ is fine. You can even do it on the same line as the echo if you use preincrement instead of postincrement.

$counter = 0;   
while($row= mysql_fetch_assoc($result)) {
    echo(++$counter . $row['foo']);
}
故人如初 2024-11-16 07:50:27

我知道这并不完全是您所要求的 - 但您为什么不简单地使用 for 循环而不是 while 呢?

for ($i = 0; $row = mysql_fetch_assoc($result); ++$i) {
    echo $i . $row['foo'];
}

I know it's not exactly what you have asked for - but why don't you simply use a for-loop instead of while?

for ($i = 0; $row = mysql_fetch_assoc($result); ++$i) {
    echo $i . $row['foo'];
}
世俗缘 2024-11-16 07:50:27

很长一段时间以来:

  • mysql API 已经过时,
  • mysqli API 的结果集对象已经可以通过 foreach() 进行遍历,就像一个数组一样关联行。

无需手动维护计数器,只需访问 foreach() 提供的索引即可。

代码:(演示)

$sql = <<<SQL
SELECT *
FROM your_table
ORDER BY lastname, firstname
SQL;

foreach ($mysqli->query($sql) as $i => $row) {
    printf(
        "<div>%d: %d, %s, %s</div>\n",
        $i + 1,
        $row['id'],
        $row['firstname'],
        $row['lastname']
    );
}

For a long time:

  • the mysql API has been obsolete and
  • the mysqli API's result set object has been traversable via foreach() as if an array of associative rows.

Instead of maintaining the counter manually, just access the index that the foreach() provides.

Code: (Demo)

$sql = <<<SQL
SELECT *
FROM your_table
ORDER BY lastname, firstname
SQL;

foreach ($mysqli->query($sql) as $i => $row) {
    printf(
        "<div>%d: %d, %s, %s</div>\n",
        $i + 1,
        $row['id'],
        $row['firstname'],
        $row['lastname']
    );
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文