2

我正在寻找使用 Do While 的优势,大多数博客和教程都说它取决于要求,如果没有我们从 Do While 获得的任何优势吗?

<?php
$i = 0;
do {
     echo $i;
} while ($i > 0);
?>
4

6 回答 6

6

那很好笑。今天是我需要一个 do while 循环的日子之一。有点像这样:我想生成一个数字,但它必须通过测试。

使用 while 循环,它看起来像这样:

$num = generateRandomNumber();
while (!numberMeetsRequirements($num)) {
    $num = generateRandomNumber();
}

如您所见,重复一行,一次在循环内,一次在循环外。在这个特定示例中,您可以通过使用 do-while 循环来避免这种情况:

do {
    $num = generateRandomNumber();
} while (!numberMeetsRequirements($num));

但就像其他人已经说过的那样:这真的取决于你在做什么。上面的代码只是一个例子。

于 2013-08-16T12:04:10.287 回答
3

没有优势。while是一个前置条件循环,并且do..while是后置条件循环。这意味着 - 在while迭代之前检查条件,并在do..while- 在迭代之后检查。

因此,indo..while循环体将至少执行一次- 所以如果你正在迭代某些东西,它可以有零重复(例如,从数据库中选择的行数)。

请注意,由于结构化程序定理,任何程序都只能用if和编写while。所以,一般来说,不需要do..while声明。您始终可以将其替换为while.

于 2013-08-16T11:35:22.520 回答
0

主要的是循环内的语句至少执行一次,而在大多数其他构造中它们可能永远不会执行。

于 2013-08-16T11:35:01.160 回答
0

do { >>command<< } while ()<-- 命令将至少执行一次

while () { >>command<< } <-- 只有当条件为真时才会执行命令

于 2013-08-16T11:35:01.383 回答
0

Do While 将始终运行一次,因为仅在第一次运行后检查条件

仅当您的条件匹配时才会运行 While Do,因为它首先被检查

于 2013-08-16T11:34:50.887 回答
0

您可以使用for,whiledo-while循环交替实现任何算法。但是,遵循逻辑流程可能会促使您使用一个循环而不是另一个循环。

使用 do-while 循环更合适(基于逻辑流程)的一个主要示例是冒泡排序的实现。该算法的描述可以在这里找到,简而言之,您知道您至少需要遍历数组一次(冒泡排序的最佳情况是,数组的长度在哪里)O(n)n实现如下:

$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 很生锈,如果有语法错误请告诉我。

于 2013-08-16T11:53:25.663 回答