php while while循环进行提问

时间:2011-02-28 09:01:38

标签: php mysql

我在我的php中有这个代码,并希望更好地理解它:

while($row = mysql_fetch_array($result)){
 echo $row['name'];
 }

如何将其转换为“for”循环?我试过了,但我不知道如何引用我想要的正确行... $ row [$ i] ['name']不起作用...

编辑 - 目标是扭转输出的回声。所以结果是另一种方式......我只知道如何使用$ i - -

进行for循环

6 个答案:

答案 0 :(得分:3)

for(;$row = mysql_fetch_array($result);) {
    echo $row['name'];
}

但为什么?

答案 1 :(得分:3)

使用mysql_num_rows检索您的行数,然后您可以使用for - 循环:

$count = mysql_num_rows($result);
for ($i=0; $i<$count; $i++)
{
  $row = mysql_fetch_array($result);
  echo $row['name'];
}

我会为这个使用“mysql_fetch_assoc”。

如果你真的需要使用“[$ i] ['name']”,你需要先将行传输到一个数组:

$rows = array();
while($row = mysql_fetch_array($result))
{
  $rows[] = $row;
}

现在您可以访问,例如$ row [0] ['name']使用for - 循环,如果你真的需要。

编辑:

  

目标是扭转回声   输出

为此,您可以将所有行提取到数组中(使用mysq_fetch_assoc和上面的while - 循环来构建数组),使用array_reverse来反转顺序,然后使用foreach - 循环以回显元素。但是,不需要for - 循环;)

答案 2 :(得分:2)

你有没有试过这样的事情:

for ($row = mysql_fetch_array($result); $row; $row = mysql_fetch_array($result)) {
     echo $row['name'];
} 

在这种方法中,您不需要使用$ i变量。

答案 3 :(得分:2)

for (;;) {
    if (!($row = mysql_fetch_array($result))) {
        break;
    }
    echo $row['name'];
}

说真的,你不能在这里使用for循环。只要有行,mysql_fetch_array只会为您提供 next 行。正如你所说的那样,没有索引要引用,因此没有多少使用循环索引。

  

目标是扭转输出的回声。

您可以在查询中使用ORDER BY ... DESC / ASC子句执行此操作。

答案 4 :(得分:0)

这个while构造中的技巧是当赋值“失败”时迭代停止,即mysql_fetch_array返回false,因为没有(更多)行,因此赋值返回false也是。

要使用for代替此while构造,您可以使用mysql_result代替mysql_fetch_array从结果集中获取特定行:

for ($i=0, $n=mysql_num_rows($result); $i < $n; $i++) {
    $row = mysql_result($result, $i);
}

答案 5 :(得分:0)

您必须使用数据库设置订单。

  

从表 ORDER BY 字段中选择* DESC