在PHP中使用Do有什么好处

时间:2013-08-16 11:31:21

标签: php

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

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

6 个答案:

答案 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引起的任何程序只能使用ifwhile编写。所以,一般来说,do..while声明中没有必要。您始终可以将其替换为while

答案 2 :(得分:0)

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

如果您的条件与首先检查的条件匹配,则只会运行While Do

答案 3 :(得分:0)

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

答案 4 :(得分:0)

do { >>command<< } while ()&lt; - 命令至少会被执行一次

while () { >>command<< }&lt; - 命令只会在条件为真时执行

答案 5 :(得分:0)

您可以使用forwhiledo-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非常生疏,如果有语法错误,请告诉我。