PHP中while循环和for循环的区别?
我现在正在读一本关于PHP的电子书,作者指出while循环和for循环的区别在于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
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
就个人而言,我在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)中根本无法作为实习生