簡體   English   中英

PHP - 解釋這個/ while循環給我

[英]PHP - Explain this while/for loop to me

我是PHP的新手,我在試圖理解這個基本的/ for循環時遇到困難。 我想澄清一些事情。 這是代碼:

while ($row = $sth->fetch (PDO::FETCH_NUM))
{
  print ("<tr>\n");
  for ($i = 0; $i < $sth->columnCount (); $i++)
   {
     print ("<td>" . htmlspecialchars ($row[$i]) . "</td>\n");
   }
   print ("</tr>\n");
}

我知道while正在評估true,所以它獲取查詢的結果集,然后打印標簽。

但是我被困在了

for ($i = 0; $i < $sth->columnCount (); $i++)

我知道第一個表達式計算一次,第二個表達式在開始時計算,只有在它為真時才移動,第三個表達式在+1時遞增。 但這究竟是用文字術語做的,為什么它是“columnCount”?

這是一個PDO數據庫設置。

在字面上,$ row是從數據庫中提取的一行,來自上面的代碼,這些代碼在一個沒有刪除的語句中。 然后它將迭代器發送到行的每個字段(從columnCount函數( http://php.net/manual/en/pdostatement.columncount.php )獲取它的數字,並打印出一些html。

通常,由於多種原因,這種迭代器是“不太理想”的代碼。 通常,PHP中的編碼實踐更喜歡使用foreach而不是for iterator,除非我們通過時實際需要計數,表面上為什么提取是作為FETCH_NUM完成的,盡管從未使用過。

while ($row = $sth->fetch())
{
  print ("<tr>\n");
  foreach ($row as $key=>$value)
   {
     print ("<td>" . htmlspecialchars($value) . "</td>\n");
   }
   print ("</tr>\n");
}

該行的作用是可以迭代特定$行的每一列。 $ sth-> columnCount()返回表格數據結構的列數。

另一方面,for循環將執行print語句i次,其中i在啟動時將為0,並且將自身增加為$ sth-> columnCount()返回的列數減1。

為什么減1?

因為通常在編程中你從0開始計數而不是1。

所以$ row [0]代表你行的第一列,$ row [1]代表第二列,依此類推,直到你到達最后一列$ row [$ sth-> columnCount() - 1]

for循環從數據集的開頭開始並進行評估,直到到達數據集的末尾。

數據集將始終從0開始,直到$i不再小於columnCount()的值,它將繼續。

$sth是一個實例化的對象(變量),它有一個名為columnCount()的方法。 該方法可能返回$sth表示的列總數。

也可以說這個for循環可以重寫為while循環:

$i = 0;
while($i < $sth->columnCount()) {
    // do something
    $i++;
}

這將迭代一行的所有字段。

columnCount()返回語句中的字段數。

所以如果你的陳述是:

SELECT a,b,c,d FROM test;

columnCount()返回4。

暫無
暫無

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

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