0

例如,假设我们有以下内容。以下之间有没有性能差异,用法差异,还是只是个人喜好?

for($i=0; $i<10; $i++){
    echo $i;
}

$i = 0; 
while($i < 10){
    echo $i;
    $i++;
}
4

2 回答 2

1

不,任何 for 循环都可以写成 while 循环(反之亦然)。同样的方式,每个递归函数都可以写成一个循环(有时需要做很多工作,但可以做到),反之亦然。

关于性能:虽然我没有对此进行基准测试,但两个循环同时声明完全相同的变量,同时执行相同的指令并同时执行相同的比较。循环完成后,相同的变量($i在您的示例中)具有相同的值。我看不出任何性能差异会来自哪里。(请注意,在某些其他语言中,例如 C++,在 for 循环的初始化部分中声明的变量在循环之后停止存在。)

您使用哪个循环主要取决于个人喜好。当迭代次数已知时,我喜欢使用 for 循环(例如在您的示例中:10 次迭代)。当循环必须继续直到满足某些条件(您在编写程序时无法预测)时,例如在迭代您不知道大小的数据库结果集时,我通常使用 while 循环。

于 2013-08-18T14:43:09.050 回答
0

唯一的区别是变量作用域(取决于编程语言)。

例如,您可能希望 $i 仅在 for 循环内具有范围,这可以实现。

这不能与 while 循环相同,但除此之外它们是相同的。

一种可能比另一种产生极其微弱的性能优势,但这将特定于编译器。它是如此之小,以至于代码偏好每次都会优先考虑。

于 2013-08-18T14:50:04.123 回答