PHP - 解释这个/ for循环给我

时间:2016-01-30 19:18:02

标签: php loops for-loop while-loop

我是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。但这究竟是用文字术语做的,为什么它是&#34; columnCount&#34;?

4 个答案:

答案 0 :(得分:1)

这是一个PDO数据库设置。

在字面意义上,$ row是从数据库中提取的一行,来自上面的代码,这些代码在一个没有削减的语句中。然后它将迭代器发送到行的每个字段(从columnCount函数(http://php.net/manual/en/pdostatement.columncount.php)获取其编号,并打印出一些html。

通常,这种迭代器不太理想。代码有几个原因。通常,PHP中的编码实践更喜欢使用foreach而不是for迭代器,除非我们通过时实际需要计数,表面上为什么获取以FETCH_NUM完成,尽管它是从未使用过。

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

答案 1 :(得分:1)

该行的作用是可以迭代特定$行的每一列。 $ sth-&gt; columnCount()返回表格数据结构的列数。

另一方面,for循环将执行print语句i次,其中i在启动时将为0,并且将自身增加为$ sth-&gt; columnCount()返回的列数减1

为什么减1?

因为通常在编程中你从0而不是1开始计数。

所以$ row [0]代表你行的第一列,$ row [1]代表第二列,依此类推,直到你到达最后一列$ row [$ sth-&gt; columnCount() - 1]

答案 2 :(得分:0)

for循环从数据集的开头开始并进行评估,直到到达数据集的末尾。

数据集始终从0开始,直到$i不再小于columnCount()的值才会继续。

$sth是一个实例化的对象(变量),它有一个名为columnCount()的方法。该方法可能会返回$sth所代表的列总数。

也可以说这个for循环可以重写为while循环:

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

答案 3 :(得分:0)

这将迭代一行的所有字段。

columnCount()返回语句中的字段数。

所以如果你的陈述是:

SELECT a,b,c,d FROM test;

columnCount()返回4.