PHP For Loop Confusion

时间:2011-04-08 02:10:03

标签: php loops for-loop

对编码世界不熟悉,这是我第一次理解循环。我在网站上看到了一个例子,我对结果感到困惑。

/* Sample Code 1 */

$counter=0
$start=1

for($start;$start<11;start++) {
   $counter=$counter+1;
   print $counter;
}

这给出了1,2,3,4,5,6,7,8,9,10

的结果

现在,如果我更新代码如下

/* Sample Code 2 */

$counter=11;
$start=1;

for($start;$start<11;start++) {
   $counter=$counter+1;
   print $counter;
}

这给出了结果12,13,14,15,16,17,18,19,20

但是,如果我更新代码如下

/* Sample Code 3 */

$counter=11;
$start=1;

for($start;$start<11;start++) {
   $counter=$counter-1;
   print $counter;
}

我得到结果10,9,8.7.6,5,4,3,2,1

如果我错了,请纠正我

如果变量$ counter的值为11,我基本上在代码$ counter = $ counter + 1中以11 + 1开始增量。这是对的吗?

但让我感到困惑的是,如果我在FOR循环中的结束值是$ start&lt; 11,那么样本代码2的结果如何可能。这是不是意味着它必须小于11?

5 个答案:

答案 0 :(得分:0)

当你开始循环时,$start小于11.然后它在迭代结束时递增。然后,如果循环达到11,则循环结束。

也就是说,如果$start为10,那么它将进入循环。它达到11,因此for语句退出循环。循环结束时为11。

答案 1 :(得分:0)

这是我写的描述

for (//declare loop
$start = 0; //declare starting value and the value to store it in
$start < 10; // Each time it comes through, if $start is under 10, do the loop. if it is 10, exit
$start++ //Increment $start by 1
)

答案 2 :(得分:0)

您的第二个示例结果中似乎缺少“21”。 这可能是你混淆的原因吗?

答案 3 :(得分:0)

我将从上面的所有例子中给出一个解释:

示例代码1

$counter=0;
$start=1;

这是声明和初始化两个变量的变量声明。

for($start;$start<11;start++) {
    $counter=$counter+1;

for loop具有结构:

for({loop initialization}; {loop condition}; {per loop process}){
    //the rest of loop process
}

<强>解释

  • 如您所见,示例#1从1开始循环(取自$start = 1)并执行loop for as long as $start is smaller than 11。为了防止它永远循环,该代码添加$start++,转换为$start = $start + 1。这样,对于每个循环,$start都会加1。
  • loop condition必须返回true才能运行循环。如果它返回false,则循环将退出。

现在,让我们检查一下这个循环中的内容:

$counter=$counter+1;
print $counter;

你看到那里:$counter=$counter+1。这意味着,您为每个循环将$ counter递增1并打印生成的$counter

让我们分解一下这个过程(我们用1开始循环#,因为它是由$start = 1定义的:

loop #   $start  ($start < 11?)  $counter ($counter = $counter + 1)
1        1       Y               1
2        2       Y               2
3        3       Y               3
4        4       Y               4
5        5       Y               5
6        6       Y               6
7        7       Y               7
8        8       Y               8
9        9       Y               9
10       10      Y               10
11       11      N               11

从上面的流程细分中,我们可以看到条件($start < 11)在循环#11上产生false。这就是为什么结果是1..10,而不是1..11

示例#2 相同:

$counter=11;
$start=1;

循环结构:

for($start;$start<11;start++) {
    $counter=$counter+1;

让我们分解这个过程:

loop #   $start  ($start < 11?)  $counter ($counter = $counter + 1)
1        1       Y               12
2        2       Y               13
3        3       Y               14
4        4       Y               15
5        5       Y               16
6        6       Y               17
7        7       Y               18
8        8       Y               19
9        9       Y               20
10       10      Y               21
11       11      N               22

这将输出12..21。因为当第11个循环发生时,它会检查$start < 11是否为false。因此,循环退出。

答案 4 :(得分:0)

请分析你的代码..你有一个明显的困惑b / w $ start和$ counter变量。请使用var_dump以查看变量的内容