2011-04-11 3 views
2

방금 ​​코딩의 세계로 들어서서 루프에 대해 모두 배우고 있습니다. 나는 for 및 while 루프에 대해 알았지 만 반환 결과가 다른 이유를 이해하지 못합니다. 누군가 평신도의 용어로 논리를 설명해 주실 수 있습니까?while과 for 루프의 결과가 다른 이유

/* 반복 코드 */

$counter = 0; 
$start = 1; 
$end = 11; 

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

I 얻을 결과, 3, 2, 1, 4, 5, 6, 7, 8, 9, 10

/* while 루프 코드 */

$start=0; 
$end=11; 

while($start<end) { 
$start=$start+1; 
print $start; 
} 

내가 얻을 결과는 1,2,3,4,5,6,7,8,9,10,11

왜 while 루프가 결과를 반환하는 것입니다 1부터 11까지 for 루프 for에서 작업 0

에서 $start 개시 1하지만 while 경우 for 경우 10

답변

0

통해 $start 시작 (1)의 결과를 반환 lst는 -

iteration $start  $start<$end  counter print start++   
    1   1   1<11   1   1  2 
    2   2   2<11   2   2  3 
    3   3   3<11   3   3  4 
    4   4   4<11   4   4  5 
    5   5   5<11   5   5  6 
    6   6   6<11   6   6  7 
    7   7   7<11   7   7  8 
    8   8   8<11   8   8  9 
    9   9   9<11   9   9  10 
    10   10   10<11   10   10  11 
    11   11   11<11 
          // (false) break 

마찬가지로 작업 할 루프는 while입니다. 그것은 종이 연필 운동입니다.

+0

좋아요.하지만 0부터 시작하지 않으면 결과는 1에서 10이 아니라 2에서 11 사이의 값을 갖습니다. – PeanutsMonkey

+0

감사합니다. 나는 아래의 코드로 그 코드를 보냈다 $ start = 1; $ end = 11; \t \t ($ start; $ start <$ end; $ start ++) { \t \t print $ start."
"; \t} 내가 얻는 결과는 1에서 10이지만 while 루프 코드로 다음을 시도하면 결과가 2에서 11이됩니다. $ start = 1; \t $ end = 11; \t \t while ($ start <$ end) { \t \t $ start = $ start + 1; \t \t 인쇄 $ 시작; \t} 제 질문은 동일한 값, 즉 1로 끝나고 같은 값 즉 11로 초기화되며 동일한 카운터 즉 시작 = 시작 + 1이 있지만 결과가 다릅니다. – PeanutsMonkey

0

개의 카운터가 동일한 값으로 초기화되지 않으며, 루프 (A)가 제 1 루프 실행 후에서

$start = 1; 
+0

네가 같은 값으로 시작하면 예. 1, while 루프는 결과를 2에서 11로 반환합니다. 구체적으로 내가 11보다 작 으면 좋겠다고 말했을 때 2, 3,4,5,6,7,8,9,10,11 – PeanutsMonkey

+0

실제로 '$ start'보다는 '$ counter'가 아닌 11보다 작아야합니다. – P2bM

2

증분으로 첫 번째 시도.

이 시도 : while 루프의 마지막 반복에

$start=1; 
$end=11; 

while($start<end) { 
    print $start; 
    $start=$start+1; 
} 
0

, 10 < (11),이 (11)와 동일하지만 루프에 이미 있도록 다음, 10에 1을 추가합니다. 그래서 출력됩니다. 다음 번에 11 < 11이 거짓이므로 즉시 종료됩니다.

이제 원하는 경우 $ start = $ start + 1; print 문 다음에.

또한 나는 혼란 스럽다고 생각합니다. 예를 들어 "$ start"를 출력하고, 다른 예에서는 "$ counter"를 출력합니다.