簡體   English   中英

如何在while循環中檢測上一次迭代

[英]How do I detect the last iteration in while loop

我首先嘗試這樣做:

$e = 0;

$objectsid = mysql_query("SELECT * FROM xw_char_items WHERE CharId = '$charid' AND ItemCat = 'object' ORDER BY SortOrder ASC");

while($obj = mysql_fetch_array($objectsid)) {

  $e++;
  if($e==9) break;

  $objectsinfo = mysql_query("SELECT * FROM xw_objects WHERE ItemId = '{$obj["ItemId"]}'");
  $object = mysql_fetch_array($objectsinfo);

  echo "&charid$e={$char["Id"]}";
  if($objectsid == end($obj)) {
  echo "&intActiveObject=1";
  echo "&intObjectsNum=$e";
  }
}

在這里它永遠不會檢測到最后一個。 我也試過這個:

$e = 0;
$len = count($objectsid));

while($obj = mysql_fetch_array($objectsid)) {

  $e++;
  if($e==9) break;

  $objectsinfo = mysql_query("SELECT * FROM xw_objects WHERE ItemId = '{$obj["ItemId"]}'");
  $object = mysql_fetch_array($objectsinfo);
  mysql_free_result($objectsinfo);

  echo "&charid$e={$char["Id"]}";
  if ($e == $len - 1) {
  echo "&intActiveObject=1";
  echo "&intObjectsNum=$e";
  }
}

在這里,它將每次迭代檢測為最后一次迭代。

有誰能使它檢測到最后一次迭代?

$objectsid變量存儲的是mysql_result對象,而不是所獲取的行的數組。 因此,即使您應用count($objectsid) ,也不會獲得所獲取數組的長度。

因此正確的方法是使用mysql_num_rows()

所以只需這樣做$len=mysql_num_rows($objectsid); 其余的將按照您的期望進行鍛煉。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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