我正在寻找使用Do的优势。大多数博客和教程说它取决于要求,没有我们从Do While获得的任何优势?
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
答案 0 :(得分:3)
这很有趣。今天是我需要一个while循环的那些日子之一。它有点像这样:我想生成一个数字,但它必须通过测试。
使用while循环,它看起来像这样:
$num = generateRandomNumber();
while (!numberMeetsRequirements($num)) {
$num = generateRandomNumber();
}
如您所见,一行重复,一次在内部,一次在循环之外。在此特定示例中,您可以通过使用do-while循环来避免这种情况:
do {
$num = generateRandomNumber();
} while (!numberMeetsRequirements($num));
但就像其他人已经说过的那样:这取决于你在做什么。上面的代码只是一个例子。
答案 1 :(得分:2)
没有优势。 while
是预先调节的循环,do..while
是后置条件循环。这意味着 - 在while
中,在迭代之前检查条件,在do..while
之后 - 在迭代之后检查。
因此,在do..while
循环体中将执行至少一次 - 因此,如果您正在迭代某些东西,它可能没有重复,则无法使用它(例如,从数据库中选择的行数。)
请注意,由structured program theorem引起的任何程序只能使用if
和while
编写。所以,一般来说,do..while
声明中没有必要。您始终可以将其替换为while
。
答案 2 :(得分:0)
A Do While将始终运行一次,因为仅在第一次运行后检查条件
如果您的条件与首先检查的条件匹配,则只会运行While Do
答案 3 :(得分:0)
主要的是循环内的语句至少执行一次 ,在大多数其他结构中,它们可能永远不会被执行。
答案 4 :(得分:0)
do { >>command<< } while ()
&lt; - 命令至少会被执行一次
while () { >>command<< }
&lt; - 命令只会在条件为真时执行
答案 5 :(得分:0)
您可以使用for
,while
和do-while
循环互换地实现任何算法。但是,遵循逻辑流程可能会促使您使用一个循环而不是另一个循环。
使用do-while循环时的一个主要示例更合适(基于逻辑流)是在冒泡排序的实现中。可以找到算法的描述here,简而言之,你知道你需要至少迭代一次数组(看起来冒泡排序的最佳情况是O(n)
,其中n
1}}是数组的长度)。实施如下:
$arr = array( 10, 5, 6, 1, 3, 2, 7, 8, 9, 4 );
$arr_len = 10;
$swapped;
do {
$swapped = false;
for ( $i = 0; i < ( $arr_len - 1 ); $i++ ) {
if ( $arr[ i ] > $arr[ i + 1 ] ) {
$temp = $arr[ i ];
$arr[ i ] = $arr[ i + 1];
$arr[ i + 1 ] = $temp;
$swapped = true;
}
}
} while ( $swapped == true );
我的PHP非常生疏,如果有语法错误,请告诉我。