例如,假设我们有以下内容。以下之间有没有性能差异,用法差异,还是只是个人喜好?
for($i=0; $i<10; $i++){
echo $i;
}
和
$i = 0;
while($i < 10){
echo $i;
$i++;
}
例如,假设我们有以下内容。以下之间有没有性能差异,用法差异,还是只是个人喜好?
for($i=0; $i<10; $i++){
echo $i;
}
和
$i = 0;
while($i < 10){
echo $i;
$i++;
}
不,任何 for 循环都可以写成 while 循环(反之亦然)。同样的方式,每个递归函数都可以写成一个循环(有时需要做很多工作,但可以做到),反之亦然。
关于性能:虽然我没有对此进行基准测试,但两个循环同时声明完全相同的变量,同时执行相同的指令并同时执行相同的比较。循环完成后,相同的变量($i
在您的示例中)具有相同的值。我看不出任何性能差异会来自哪里。(请注意,在某些其他语言中,例如 C++,在 for 循环的初始化部分中声明的变量在循环之后停止存在。)
您使用哪个循环主要取决于个人喜好。当迭代次数已知时,我喜欢使用 for 循环(例如在您的示例中:10 次迭代)。当循环必须继续直到满足某些条件(您在编写程序时无法预测)时,例如在迭代您不知道大小的数据库结果集时,我通常使用 while 循环。
唯一的区别是变量作用域(取决于编程语言)。
例如,您可能希望 $i 仅在 for 循环内具有范围,这可以实现。
这不能与 while 循环相同,但除此之外它们是相同的。
一种可能比另一种产生极其微弱的性能优势,但这将特定于编译器。它是如此之小,以至于代码偏好每次都会优先考虑。