php - 即使未使用计数器,此循环如何工作?
问题描述
我正在探索一些怀旧的旧 php 文件,我注意到这是我之前为获取一些记录而写的:
<?php
for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )
{
print( "<tr>" );
foreach ( $row as $key => $value )
{
if($key == '6')
{
if($value == '1'){print( "<td>12/9/15 6:00PM - 7:00PM</td>" );}
if($value == '2'){print( "<td>12/9/15 7:00PM - 8:00PM</td>" );}
if($value == '3'){print( "<td>12/9/15 8:00PM - 9:00PM</td>" );}
if($value == '4'){print( "<td>12/10/15 6:00PM - 7:00PM</td>" );}
if($value == '5'){print( "<td>12/10/15 7:00PM - 8:00PM</td>" );}
if($value == '6'){print( "<td>12/10/15 8:00PM - 9:00PM</td>" );}
}
else
{
print( "<td>$value</td>" );
}
}
print( "</tr>" );
}
mysqli_close( $database );
?>
我将其更改为while ($row = mysqli_fetch_row( $result ))
,它也可以正常工作,正如预期的那样。我只是想了解for循环方法在$counter
不使用时如何工作的逻辑......
我正在争先恐后地理解为什么我使用这种逻辑,以及当它甚至$counter
不用于索引或任何东西时它是如何工作的。
解决方案
了解其工作原理的最简单方法是剖析for
循环。
for (<initialization>; <condition>; <update expresion>)
在您的情况下,您有一个最初设置并递增的计数器。
for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )
您没有使用计数器,但这实际上并不重要,因为唯一决定循环是否继续的是条件是否为true。由于最终mysqli_fetch_row
停止返回结果,循环将终止。出于循环的目的,该$counter
变量未使用并被忽略。
您还可以将 for 循环重写为:
for (;$row = mysqli_fetch_row( $result );)
这也一样。但是,什么是while
循环?它只是一个没有初始化和更新表达式的 for 循环。因此,您可以再次将其重写为:
while ($row = mysqli_fetch_row( $result ))
我希望这能解决问题。
推荐阅读
- asp.net-core - 为什么我要返回到 MVC 中的 POST 方法的 Viewmodel 返回 null ViewModel
- javascript - 如何使用 jquery 重新索引数组属性名称
- installation - 无法从“lxml”导入“etree”
- maven - Micronaut Swagger 多模块
- r - R tables::tabular() 使用Format() 摆脱scientifc和round
- node.js - Nodejs hana-client 连接池示例
- python - 接受一个数组并产生下一个数字的脚本
- powerbi - 我可以同时使用 Direct Query 和 CSV 发布 POWER BI 仪表板吗?
- python - python 3.0中列表的比较
- sql-server - 如何在审计方面以编程方式记录数据库表值更改?