【问题标题】:replace while ($row=mysql_fetch_array($res)) loop with for loop用 for 循环替换 while ($row=mysql_fetch_array($res)) 循环
【发布时间】:2011-12-07 20:12:36
【问题描述】:

我想知道如何替换这个循环: 而 ($row=mysql_fetch_array($res)) 通过 for 循环。

我想知道,因为在我的网站上,我想在我的网站上显示数据,但第一行需要与其他行不同的布局。

所以我想要的是这样的:

$row[0]

for ($i = 1; $i <= mysql_num_rows($result); $i++) {
$row[$i]
}

我在这里尝试了一些搜索,但找不到合乎逻辑的东西:我看到的大多数示例都会对服务器执行新的 sql 查询,这对速度来说不是很好,是吗?

请告诉我!

【问题讨论】:

  • 你不需要使用for 有一个计数器
  • 只是出于好奇,为什么有人反对这个问题?

标签: php mysql loops for-loop while-loop


【解决方案1】:

我不会那样做。我会这样做:

$first=true;
while ($row=mysql_fetch_array($res)) {
    if ($first) {
        //Extra formatting or whatever you need to do can go here
    }
    //Other code goes here
    $first=false;
}

【讨论】:

  • 哇。这是一个很棒的解决方案!这么简单我没想到!非常感谢!!!
  • 我肯定会使用这个解决方案,它非常完美!我也被你们回答我问题的速度惊呆了,非常感谢你们!
  • @laarsk,没问题。如果这对您有用,您应该通过单击左侧的复选标记来接受它作为答案。您可以在此处阅读更多相关信息:stackoverflow.com/faq
  • 是的,虽然经过 Jeremy 的解释,我意识到这可能是一个更好的解决方案:更简单!
  • @laarsk,没关系。不过,出于 Jonathan Kuhn 提到的原因,我不会那样做。
【解决方案2】:

每次运行 mysql_fetch_array 时,它都会获取 next 行,因此您可以在循环外运行一次,然后让循环遍历剩余的行。

没有发生的是mysql_data_seek,这导致它在顶部重新启动,但你没有这样做!

例子

$row = mysql_fetch_array($res);
# process first row here

while ($row = mysql_fetch_array($res)) {
    # process second and subsequent rows here
}

【讨论】:

  • 但我如何让它只抓取一排?谢谢你的帖子,但我不完全明白你在说什么..
  • mysql_fetch_array 每次运行时获取一行(或返回 false)。如果您在循环外运行它,它只会从集合中获取下一行。第一次,这意味着它获取 first 行。因此,如果您在开始时在循环之外运行它,它会获取第一行。
  • 哦,好吧,这甚至比 Brad 提供的解决方案更简单?
  • 当然。不需要额外的变量。
  • 根据您尝试的最终结果,您将在#process first...process second... 部分中复制代码。此外,如果查询返回 0 行(这总是可能的),第一个 $row 将为 false,因此您需要检查 while 将在没有额外检查的情况下跳过循环的 0 行。我脑子里只有几个想法。
【解决方案3】:
for ($i = 1; $row = mysql_fetch_row($result); $i++) {
  $row[$i]
}

当然是字面意思,但完全没用的答案。
要在您的网站上显示数据,您应该使用模板。
因此,无论如何,您必须先将数据放入数组中

【讨论】:

  • 修复了它。 $row[$i] 可能也应该只是 $row,其中 $i 作为当前行的计数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多