簡體   English   中英

php while循環進入問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM