Sanjib Sinha Posted January 13, 2009 Share Posted January 13, 2009 A simple and same loop code gives two kind of output here is the first code: <?php $count = 0; while($count <= 10){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; $count++; } echo "Total Count: " . $count; ?> It gives output: Count: 0 Count: 1 Count: 2 Count: 3 Count: 4 FIVE Count: 6 Count: 7 Count: 8 Count: 9 Count: 10 Total Count: 11 It seems perfectly normal Now the next code: <?php for($count = 0; $count <= 10; $count++){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; $count++; } echo "Total Count: " . $count; ?> It gives output: Count: 0 Count: 2 Count: 4 Count: 6 Count: 8 Count: 10 Total Count: 12 Why this change? Where all odd numbers gone? Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/ Share on other sites More sharing options...
xtopolis Posted January 13, 2009 Share Posted January 13, 2009 You are incrementing $count twice in the for() loop. Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-735989 Share on other sites More sharing options...
Sanjib Sinha Posted January 13, 2009 Author Share Posted January 13, 2009 You are incrementing $count twice in the for() loop. Will you please explain a little bit? For that extra increment why only the odd integers gone away? Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-735990 Share on other sites More sharing options...
xtopolis Posted January 13, 2009 Share Posted January 13, 2009 Sure, let's break them down: WHILE loop while while(condition is true) { execute code between the braces } $count = 0; while($count <= 10) Set a start point, 0. Then while $count (which starts at 0) is less than or equal to 10, execute the code in the braces. Less than or equal to 10 is the same thing as saying "when $count is greater than 10, stop executing, and go on to next block of code (after the { } of the while loop) { if($count == 5){ //Check what $count is, if it's 5 , echo FIVE echo "FIVE" . "<br>"; } else //If it's not five, echo it's current value echo "Count: " . $count . "<br>"; $count++;// increment the $count by +1, and go back to the while(condition) area } echo "Total Count: " . $count;//echo $counts final value. It is 11 because on pass 10, the condition is still true, so it increments and goes to check if the condition is still valid (it's not now) FOR loop for for(expression 1; expression 2; expression 3) [evaluate expression one] [run expression 2] { do code between braces } [run expression 3] --commonly thought of as: for(start value; condition check; action) //at least to me for($count = 0; $count <= 10; $count++) The first expression initializes $count at 0. The second checks that $count is less than or equal to (not greater) than 10. The third is what to do after the loop has ran through it's { code } once { if($count == 5){//if $count == 5, echo FIVE echo "FIVE" . "<br>"; } else //else echo the value echo "Count: " . $count . "<br>"; $count++;//increment count }//LOOP HAS FINISHED, RUN THIRD EXPRESSION $count ++ As you can see, you have already incremented it in your code, then before the loop is run again, the third expression in the for loop runs, incrementing the $count variable echo "Total Count: " . $count; ?> Hopefully that isn't too confusing? Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-735997 Share on other sites More sharing options...
Sanjib Sinha Posted January 13, 2009 Author Share Posted January 13, 2009 Sure, let's break them down: WHILE loop while while(condition is true) { execute code between the braces } $count = 0; while($count <= 10) Set a start point, 0. Then while $count (which starts at 0) is less than or equal to 10, execute the code in the braces. Less than or equal to 10 is the same thing as saying "when $count is greater than 10, stop executing, and go on to next block of code (after the { } of the while loop) { if($count == 5){ //Check what $count is, if it's 5 , echo FIVE echo "FIVE" . "<br>"; } else //If it's not five, echo it's current value echo "Count: " . $count . "<br>"; $count++;// increment the $count by +1, and go back to the while(condition) area } echo "Total Count: " . $count;//echo $counts final value. It is 11 because on pass 10, the condition is still true, so it increments and goes to check if the condition is still valid (it's not now) FOR loop for for(expression 1; expression 2; expression 3) [evaluate expression one] [run expression 2] { do code between braces } [run expression 3] --commonly thought of as: for(start value; condition check; action) //at least to me for($count = 0; $count <= 10; $count++) The first expression initializes $count at 0. The second checks that $count is less than or equal to (not greater) than 10. The third is what to do after the loop has ran through it's { code } once { if($count == 5){//if $count == 5, echo FIVE echo "FIVE" . "<br>"; } else //else echo the value echo "Count: " . $count . "<br>"; $count++;//increment count }//LOOP HAS FINISHED, RUN THIRD EXPRESSION $count ++ As you can see, you have already incremented it in your code, then before the loop is run again, the third expression in the for loop runs, incrementing the $count variable echo "Total Count: " . $count; ?> Hopefully that isn't too confusing? It's not confusing. Thanks for your explanation. But I did not get my answer, that is: why 1,3,5,7 and 9 are not printed out? I put the code slightly differently: <?php for($count = 0; $count <= 10; $count++){ if($count == 12){ echo "Four: " . $count . "<br>"; } else echo $count . "<br>"; $count++; } The output is: 0 2 4 6 8 10 Total Count: 12 Look the same thing happens! Again! Odd integers are out. Why odd integers are out? Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736120 Share on other sites More sharing options...
killah Posted January 13, 2009 Share Posted January 13, 2009 You took it slightly different. Try this as your for loop. <?php for($count = 0; $count <= 9; $count++){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; } echo "Total Count: " . $count; ?> Assuming you wan't to stop the total count at 10. I changed the top bit to 9 so it can stop at 10. You already have $count++ in the for() function. So why put it lower down? that is why it was double counting. Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736125 Share on other sites More sharing options...
sasa Posted January 13, 2009 Share Posted January 13, 2009 look coments <?php for($count = 0; $count <= 10; $count++ // first increment variable $count ){ if($count == 12){ echo "Four: " . $count . "<br>"; } else echo $count . "<br>"; $count++; // 2nd increment variable $count } just remove ones of this <?php for($count = 0; $count <= 10; ){ if($count == 12){ echo "Four: " . $count . "<br>"; } else echo $count . "<br>"; $count++; } or <?php for($count = 0; $count <= 10; $count++){ if($count == 12){ echo "Four: " . $count . "<br>"; } else echo $count . "<br>"; } Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736130 Share on other sites More sharing options...
Sanjib Sinha Posted January 13, 2009 Author Share Posted January 13, 2009 You took it slightly different. Try this as your for loop. <?php for($count = 0; $count <= 9; $count++){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; } echo "Total Count: " . $count; ?> Assuming you wan't to stop the total count at 10. I changed the top bit to 9 so it can stop at 10. You already have $count++ in the for() function. So why put it lower down? that is why it was double counting. Thanks for your interest. What I really want to know is when I put $count++ lower down it throws odd integers out. Why? Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736271 Share on other sites More sharing options...
premiso Posted January 13, 2009 Share Posted January 13, 2009 You took it slightly different. Try this as your for loop. <?php for($count = 0; $count <= 9; $count++){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; } echo "Total Count: " . $count; ?> Assuming you wan't to stop the total count at 10. I changed the top bit to 9 so it can stop at 10. You already have $count++ in the for() function. So why put it lower down? that is why it was double counting. Thanks for your interest. What I really want to know is when I put $count++ lower down it throws odd integers out. Why? Because it is essentially adding 2 every time to count, as you can see in the for loop count++ is already there, that works everytime, so when you add count++; inside the for loop it runs twice, thus giving you the odd integers. Make sense? It was like you were adding 2 each time the loop ran. Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736275 Share on other sites More sharing options...
Sanjib Sinha Posted January 13, 2009 Author Share Posted January 13, 2009 You took it slightly different. Try this as your for loop. <?php for($count = 0; $count <= 9; $count++){ if($count == 5){ echo "FIVE" . "<br>"; } else echo "Count: " . $count . "<br>"; } echo "Total Count: " . $count; ?> Assuming you wan't to stop the total count at 10. I changed the top bit to 9 so it can stop at 10. You already have $count++ in the for() function. So why put it lower down? that is why it was double counting. Thanks for your interest. What I really want to know is when I put $count++ lower down it throws odd integers out. Why? Because it is essentially adding 2 every time to count, as you can see in the for loop count++ is already there, that works everytime, so when you add count++; inside the for loop it runs twice, thus giving you the odd integers. Make sense? It was like you were adding 2 each time the loop ran. AT LAST! I GOT MY ANSWER. IT COUNTS TWICE AND STOPS WHEN IT REACHES 10. THAT'S WHY 1,3,5,7 AND 9 ARE NOT PRINTED OUT. WELL, SO IT CAN BE USED TO THROW ODD NUMBERS OUT FROM A BUNCH OF NUMBERS. THANKS A LOT. Quote Link to comment https://forums.phpfreaks.com/topic/140634-loops-problem/#findComment-736285 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.