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