PHP考试编程题:将do while循环转换为for循环且不改变输出
搞定你的PHP循环转换问题
嘿,刚考完试辛苦啦!我来帮你把这段do-while循环转成for循环,保证输出结果和原代码一模一样~
首先先理清楚原代码到底在干嘛,这样你也能明白转换的逻辑:
- 一开始定义了
$x = 0,$count = 10 - 因为是do-while循环,所以不管条件怎么样,先执行一遍循环体:
- 先输出
10加换行<BR> - 把
$count减2,变成8 - 把新的
$count加到$x里,$x就变成8了
- 先输出
- 然后检查循环条件
$count < 1:这时候$count是8,显然不满足,循环直接终止 - 最后输出
$x,也就是8
接下来是转换好的for循环代码,两种写法都可以,你看哪种顺眼用哪种:
第一种是更贴合原代码步骤的写法,几乎完全复刻原逻辑:
<?php // 转换后的for循环 $x = 0; // for循环的初始化给$count赋值10,条件部分留空(确保至少执行一次),循环后不做操作 for ($count = 10; ; ) { echo ($count . "<BR>"); $count = $count - 2; $x = $x + $count; // 检查原循环的终止条件,当$count不小于1时就跳出循环 if ($count >= 1) { break; } } echo ($x); ?>
第二种是把$count的更新放到for循环的第三个部分,写法更紧凑:
<?php // 紧凑版for循环写法 $x = 0; for ($count = 10; ; $count -= 2) { echo ($count . "<BR>"); $x += $count - 2; // 这里等价于先减2再加到$x,和原逻辑一致 // 同样判断终止条件 if ($count - 2 >= 1) { break; } } echo ($x); ?>
小提示
原do-while循环的核心是「先执行、再判断」,而普通for循环是「先判断、再执行」,所以我们把for的条件位留空,在循环体里手动判断终止条件并break,这样就能完美复现do-while的执行顺序,输出结果自然和原代码完全一样~
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

