对编码世界不熟悉,这是我第一次理解循环。我在网站上看到了一个例子,我对结果感到困惑。
/* 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?
答案 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
}
<强>解释强>:
$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以查看变量的内容