使用Do While PHP的优势是什么

使用Do While PHP的优势是什么,php,Php,我正在搜索使用Do-While的优势,大多数博客和教程都说这取决于需求,如果没有这一点,我们从Do-While获得的优势是什么 <?php $i = 0; do { echo $i; } while ($i > 0); ?> Do While将始终运行一次,因为只有在第一次运行后才检查条件 其中,While Do仅在您的条件匹配时运行,因为它首先被选中。最主要的是循环中的语句至少执行一次,而在大多数其他构造中,它们可能永远不会执行。Do{>>commandcomma

我正在搜索使用Do-While的优势,大多数博客和教程都说这取决于需求,如果没有这一点,我们从Do-While获得的优势是什么

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

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


其中,While Do仅在您的条件匹配时运行,因为它首先被选中。最主要的是循环中的语句至少执行一次,而在大多数其他构造中,它们可能永远不会执行。

Do{>>commandcommand没有优势。
while
是一个预条件循环,
do..while
是后条件循环。这意味着在
while
中,在迭代之前检查一个条件,在
do..while
中,在迭代之后检查一个条件

因此,在
do..while
中,循环体将被执行至少一次——因此,如果您正在迭代某个可能重复次数为零的对象(例如,从数据库中选择的行数),则不能使用循环体


请注意,由于任何程序都只能使用
if
while
编写。因此,一般来说,没有必要使用
do..while
语句。您始终可以使用
while
替换它。您可以使用
for
while
do while
循环来实现任何算法y、 然而,遵循逻辑流程可能会促使您使用一个循环而不是另一个循环

使用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 );
$arr=array(10,5,6,1,3,2,7,8,9,4);
$arr_len=10;
美元交换;
做{
$swapped=false;
对于($i=0;i<($arr_len-1);$i++){
如果($arr[i]>$arr[i+1]){
$temp=$arr[i];
$arr[i]=$arr[i+1];
$arr[i+1]=$temp;
$swapped=true;
}
}
}而($swaped==true);

我的PHP非常生疏,如果有语法错误,请务必告诉我。

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

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

$num = generateRandomNumber();
while (!numberMeetsRequirements($num)) {
    $num = generateRandomNumber();
}
正如您所看到的,一行重复,一次在循环内部,一次在循环外部。在这个特定示例中,您可以通过使用do while循环来避免这种情况:

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

但正如其他人已经说过的:这实际上取决于你在做什么。上面的代码只是一个例子。

所有三个循环构造都可以做相同的事情。优点是,根据你到底想做什么,其中一个通常会导致更具可读性(“自然”)代码。优点是
do/while
中的代码总是至少执行一次(一次或多次);与
中的代码相比,while
中的代码将执行零次或多次。环境决定了您应该使用哪一种。为什么我认为,在每种情况下,无论语句是什么,都需要执行一次条件,而无需执行{}还有?是的,问题是什么?或者你的意思是什么?我的意思是真的有一个实际的例子,其中do{}while是必要的吗?我现在很少在实际代码中看到它。使用它,而不是不使用do{}使它适合吗?由于结构化程序定理()任何程序都只能用
if
while
来编写。因此,一般来说,没有必要用
do..while
语句来编写。你可以用
while
来代替它。值得称赞的是@alma do muri-他的帖子应该是第一个问题的标准答案