2016-01-30 24 views
3

我是PHP新手,我试图理解这个基本的while/for循环。有几件事我只是想澄清。下面是代码:PHP - 向我解释这个while/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"); 
} 

我知道而被评估为true,所以它得到的查询结果集,然后打印标签。

但是我卡上的

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

我知道,第一个表达式一次,第二次评估开头且仅当它是真实的移动,并通过+1第三增量。但是,这在字面意义上究竟是什么,为什么它是“columnCount”?

回答

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"); 
} 
+0

谢谢你一堆!从字面上看,它有很大的帮助。所有的答案都很有帮助。所以基本上,for循环创建一种方式来浏览行的列?代码的for部分循环直到到达列的末尾,然后while部分继续循环?谢谢大家帮我把这个包裹起来。 –

0

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

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

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

它也可以帮助说,这个for循环可改写为while循环:

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

好信息和不同的方式来想想它,谢谢! –

0

这将通过一个行的所有领域进行迭代。

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

所以,如果你的说法是:

SELECT a,b,c,d FROM test;

信息columnCount()的返回4.

1

那行代码使得迭代特定$行的每一列成为可能。$ sth-> columnCount()返回n对于什么似乎是表格数据结构的列。

另一方面,for循环将执行打印语句i次,其中我在启动时将为0,并将自身增加为由$ sth-> columnCount()减1返回的列数。

为什么减1?

因为平时在节目开始从0而不是1

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

+0

谢谢!所有的答案帮助我理解这一点。 –