我在我的php中有这个代码,并希望更好地理解它:
while($row = mysql_fetch_array($result)){
echo $row['name'];
}
如何将其转换为“for”循环?我试过了,但我不知道如何引用我想要的正确行... $ row [$ i] ['name']不起作用...
编辑 - 目标是扭转输出的回声。所以结果是另一种方式......我只知道如何使用$ i - -
进行for循环答案 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