[英]php while loop into for question
我在我的php中有此代碼,想更好地理解它:
while($row = mysql_fetch_array($result)){
echo $row['name'];
}
如何將其變成“ for”循環? 我嘗試過,但是我不知道如何引用我想要的正確行... $ row [$ i] ['name']不起作用...
編輯-目標是反轉輸出的回聲。 所以結果是另一種方式...我只知道如何使用$ i-- for for循環來做到這一點。
for(;$row = mysql_fetch_array($result);) {
echo $row['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] ['name']”,則需要先將行轉移到數組中:
$rows = array();
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
現在,如果確實需要,您可以使用for
-loop訪問例如$ row [0] ['name']。
編輯:
目標是反轉輸出的回聲。
要做到這一點可以取所有行到一個數組(使用mysq_fetch_assoc
和上述while
-loop構建陣列),使用array_reverse
扭轉順序,然后一個foreach
-loop呼應的元素。 不過,不需要for
循環;)
您是否嘗試過以下方法:
for ($row = mysql_fetch_array($result); $row; $row = mysql_fetch_array($result)) {
echo $row['name'];
}
在這種方法中,您不需要使用$ i變量。
for (;;) {
if (!($row = mysql_fetch_array($result))) {
break;
}
echo $row['name'];
}
嚴重的是,您不能在此處使用for
循環。 只要有行, mysql_fetch_array
只會給您下一行。 就像您正確說的那樣,這里沒有要引用的索引,因此對索引的循環使用很少。
目標是反轉輸出的回聲。
您可以在查詢中使用ORDER BY ... DESC
/ ASC
子句來執行此操作。
這種while
構造的技巧是,當賦值“失敗”時,迭代停止,即mysql_fetch_array
返回false
因為沒有(更多)行,因此賦值也返回false
。
要while
構造時使用for
代替this,可以使用mysql_result
而不是mysql_fetch_array
從結果集中獲取特定行:
for ($i=0, $n=mysql_num_rows($result); $i < $n; $i++) {
$row = mysql_result($result, $i);
}
您必須使用數據庫設置訂單。
從表ORDER BY字段DESC中選擇*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.