我在我的PHP代碼並想更好地理解它:PHP while循環成問題
while($row = mysql_fetch_array($result)){
echo $row['name'];
}
我怎樣才能把它變成一個「for」循環?我嘗試了,但我不知道如何引用我想要的正確的行... $ row [$ i] ['name']沒有工作...
編輯 - 目標是扭轉回聲的輸出。這樣的成績是其他的方式......我只知道如何與使用$我 - 循環做到這一點 -
我在我的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