PHP中while循环和for循环的区别?

PHP中while循环和for循环的区别?,php,for-loop,while-loop,Php,For Loop,While Loop,我现在正在读一本关于PHP的电子书,作者指出while循环和for循环的区别在于for循环将计算它运行的次数 就拿这个来说吧: <?php for ($i = 1; $i < 10; $i = $i + 1) { print "Number $i\n"; } ?> 但这不是和 <?php $i = 1; while ($i < 10) { $i = $i + 1;

我现在正在读一本关于PHP的电子书,作者指出while循环和for循环的区别在于for循环将计算它运行的次数

就拿这个来说吧:

<?php
    for ($i = 1; $i < 10; $i = $i + 1) {
        print "Number $i\n";
    }
?> 

但这不是和

<?php
    $i = 1;
        while ($i < 10) {
            $i = $i + 1;
            print "Number $i\n";
        }
?>

还是有其他一些他没有指出的差异?(除了使用while循环之外,当您不确定该条件将保持多久时,例如从数据库中选择行)


我的意思是,如果这是唯一的区别,我不能不使用for循环而使用while循环吗?

可以吗?当然可以。但你是否应该是一个完全不同的问题


在这个场景中,for循环更具可读性,这无疑是在几乎所有具有循环指令的语言中使用的约定。如果您使用
while
循环,人们会想知道为什么您不使用
for
循环。

这是一个品味、个人偏好和可读性的问题。有时
while
循环在逻辑上工作得更好。有时,一个
用于

根据我的个人规则,如果我不需要变量初始值设定项,那么我使用
while

但是,
foreach
循环本身就很有用


另外,在PHP的作用域中,所有不在函数中的变量都是全局变量,因此无论使用哪个循环控件,变量都将继续存在于循环之后。

从功能上讲,for循环等同于while循环;也就是说,每一个都可以被改写为另一个,而不会改变结果或产生副作用。然而,每一种都有不同的内涵。
while
循环在条件保持时运行;情况是静态的,尽管情况有所变化。
for
循环在序列上运行。这一差异对程序员来说很重要,但对程序来说并不重要,正如变量名的选择对程序员来说很重要,即使变量名可以更改以生成功能等效的代码。一个循环构造比另一个循环构造更有意义,这取决于具体情况。

A for loop

for (INIT; CONDITIONS; UPDATE) {
    BODY
}
基本上与如下结构的while循环相同:

INIT
while (CONDITIONS) {
    BODY
    UPDATE
}
for ($i=0; $i < count($some_array); $i++){
  echo $some_array[$i];
}
虽然从技术上讲,您可以使用其中一种,但在某些情况下,
While
for
效果更好,反之亦然。

“for”更清楚地表达了您的意图 从功能上讲,您的两个示例是相同的。但他们表达了不同的意图

  • while
    的意思是“我不知道这种情况会持续多久,但只要它持续多久,就做这件事。”
  • for
    的意思是“我有特定数量的重复供您执行。”
当你指的是另一个的时候,你可以使用其中一个,但是阅读代码比较困难

在这里,
for
更可取的一些其他原因
  • 它更简洁,将有关循环的所有信息放在一个地方
  • 它使
    $i
    成为循环的局部变量
不要忘记foreach的

就个人而言,我在PHP中最常用的循环是
foreach
。如果你发现自己在做这样的事情:

INIT
while (CONDITIONS) {
    BODY
    UPDATE
}
for ($i=0; $i < count($some_array); $i++){
  echo $some_array[$i];
}

输入速度更快,阅读更容易。

for()和While()之间的主要区别在于我们必须定义限制或计数,但在While()循环中,我们不定义限制或计数,直到到达最后一个项为止

用于循环 初始化可以是循环内语句,也可以是循环外语句。 它通常在已知迭代次数时使用。 条件是一个关系表达式。 当初始化和增量很简单时使用。 for(初始化;条件;迭代) {声明;}

WHILE循环 初始化总是在循环之外。 它通常在迭代次数未知时使用。 条件可以是表达式或非零值。 它用于复杂的初始化。 while(条件)
{statement(s);}

那么主要是偏好的问题?标准化呢?首选哪个循环取决于什么适合代码,而不是您个人的偏好。如果您了解了这两种循环的工作原理,您就会有经验地了解在何处/何时使用每种类型declaration@Rob:是的,尽管您可以将其同时写成
$i++
++$i
。如果它本身就是一种陈述,那么就没有行为上的差异。唯一的区别是它是否是表达式的一部分,如
$j=$i++
$j=++$i
。将
++
放在末尾会使增量在引用变量后发生,因此
$j
将在增量之前具有
$i
的值。在后一个示例中(在
$i
之前有
++
),
$j
将在增量之后给出值。换句话说,在任何一个语句结束后,第一个语句使
$j
等于
$i-1
,第二个语句使
$j
等于
$i
。@Rob:这不是必须的,但既然键入
+$i
和键入
$i++
一样容易,为什么不呢?:)那么对于for循环,变量将在循环完成后重置?或者我误解了吗?在许多其他语言中,我不会存在于for循环之外,尝试在循环之外访问它会导致错误。然而,在PHP中,在声明函数作用域后,无论在何处,我都可以在函数作用域中使用。假设您的循环变量不存在于for循环之外。如果要再次使用$i,请确保在再次使用它之前为其分配一个新值(重新初始化)。否则,你就是在教自己一个糟糕的习惯,在更严格的语言(如C或Java)中根本无法作为实习生