PHP while循环成问题
我在我的PHP代码并想更好地理解它:PHP while循环成问题
while($row = mysql_fetch_array($result)){
echo $row['name'];
}
我怎样才能把它变成一个“for”循环?我尝试了,但我不知道如何引用我想要的正确的行... $ row [$ i] ['name']没有工作...
编辑 - 目标是扭转回声的输出。这样的成绩是其他的方式......我只知道如何与使用$我 - 循环做到这一点 -
找回使用mysql_num_rows
的行数,那么你可以使用一个for
-loop:
$count = mysql_num_rows($result);
for ($i=0; $i<$count; $i++)
{
$row = mysql_fetch_array($result);
echo $row['name'];
}
我会使用 “mysql_fetch_assoc” 这一个。
如果你真的需要使用“[$ i] [‘名’]”,你需要的行首先转移到一个数组:
$rows = array();
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
现在您可以访问如$ row [0] ['name']使用for
-loop,如果你真的需要的话。
编辑:
目标是扭转 输出的回声。
要做到这一点可以取所有行到一个数组(使用mysq_fetch_assoc
和上述while
-loop构建阵列),使用array_reverse
扭转顺序,然后一个foreach
-loop呼应的元素。尽管如此,没有for
-loop需要)
你有没有尝试过这样的事情:
for ($row = mysql_fetch_array($result); $row; $row = mysql_fetch_array($result)) {
echo $row['name'];
}
在这种方法中,你不需要使用$ i变量。
for(;$row = mysql_fetch_array($result);) {
echo $row['name'];
}
但是为什么?
for (;;) {
if (!($row = mysql_fetch_array($result))) {
break;
}
echo $row['name'];
}
认真不过,你不能这里使用for
循环。 mysql_fetch_array
只给你下一个排,只要有行。正如你所说的,没有索引可以引用,因此没有太多的使用循环索引。
目标是扭转输出的回声。
您在查询中使用ORDER BY ... DESC
/ASC
子句来执行此操作。
诀窍在此while
构建体是,当分配“失败”,因为不存在(进一步)的行,因此分配返回false
太迭代停止时,即返回mysql_fetch_array
false
。
要使用for
而不是这个while
结构,你可以使用mysql_result
而不是mysql_fetch_array
从结果集中获取特定的行:
for ($i=0, $n=mysql_num_rows($result); $i < $n; $i++) {
$row = mysql_result($result, $i);
}
你必须设置使用数据库的顺序。
SELECT * FROM表ORDER BY场DESC
这几乎是不可能的......你为什么要呢? – Bobby 2011-02-28 09:04:10
目标是扭转输出的回波。所以结果是另一种方式...我只知道如何使用$ i-- – David19801 2011-02-28 09:06:46
for循环来做到这一点反转输出更简单的方法是在您的SQL查询中使用带或不带DESC的ORDER BY – kokosing 2011-02-28 09:29:50