PHP Question - Small Script |
PHP Question - Small Script |
Aush |
Mar 24 2012, 07:37 PM
Post
#1
|
Novice Group: Members Posts: 25 Joined: 8-February 10 Member No.: 11,027 |
I have a very small script that I need help with. I'm learning PHP, and I can't figure out why this loop won't work. Please help! =]
Here it is: <?PHP $counter = 0; $start = 1; for($start; $start < 11; $start++) { $counter = $counter++; print $counter . "<BR>"; } ?> It DOES work when I do this, however: <?PHP $counter = 0; $start = 1; for($start; $start < 11; $start++) { $counter = $counter + 1; print $counter . "<BR>"; } ?> I bolded the difference between the two. Thank you very much. |
Darin McGrew |
Mar 24 2012, 08:08 PM
Post
#2
|
WDG Member Group: Root Admin Posts: 8,365 Joined: 4-August 06 From: Mountain View, CA Member No.: 3 |
Do you understand what $counter++ does?
|
Aush |
Mar 24 2012, 08:48 PM
Post
#3
|
Novice Group: Members Posts: 25 Joined: 8-February 10 Member No.: 11,027 |
I thought it was supposed to add 1 everytime it looped.
|
Ephraim F. Moya |
Mar 24 2012, 09:31 PM
Post
#4
|
Advanced Member Group: Members Posts: 167 Joined: 2-September 07 From: New Mexico Member No.: 3,702 |
I have a very small script that I need help with. I'm learning PHP, and I can't figure out why this loop won't work. Please help! =] Here it is: <?PHP $counter = 0; $start = 1; for($start; $start < 11; $start++) { $counter = $counter++; print $counter . "<BR>"; } ?> It DOES work when I do this, however: <?PHP $counter = 0; $start = 1; for($start; $start < 11; $start++) { $counter = $counter + 1; print $counter . "<BR>"; } ?> I bolded the difference between the two. Thank you very much. With the ++ after the variable ($v++) the variable is used first then it's incremented. With the ++ before the variable (++$v) the variable is incremented before use. So What you want is $counter = ++$counter; Or maybe just $counter++; by itself. Or ++$counter; by itself. |
Aush |
Mar 25 2012, 01:13 PM
Post
#5
|
Novice Group: Members Posts: 25 Joined: 8-February 10 Member No.: 11,027 |
Thank you for the response.
I still have a question, though. Even if $counter is incremented after using it, shouldn't it still add 1 each time, since it's looping? I don't see why it makes a difference whether it's used before or after. |
Ephraim F. Moya |
Mar 25 2012, 01:55 PM
Post
#6
|
Advanced Member Group: Members Posts: 167 Joined: 2-September 07 From: New Mexico Member No.: 3,702 |
Thank you for the response. I still have a question, though. Even if $counter is incremented after using it, shouldn't it still add 1 each time, since it's looping? I don't see why it makes a difference whether it's used before or after. Because $counter = $counter++ IS ALWAYS ZERO! You might be interested in this more efficient way of writing your loop: <?php for( $start = 1, $counter = 0; $start < 11; $start++ ) { echo "{$counter++}. <br>"; } or: for( $start = 0, $counter = 0; $start < 10; echo "{$counter++} <br>", $start++); This post has been edited by Ephraim F. Moya: Mar 25 2012, 02:54 PM |
Ephraim F. Moya |
Mar 25 2012, 10:42 PM
Post
#7
|
Advanced Member Group: Members Posts: 167 Joined: 2-September 07 From: New Mexico Member No.: 3,702 |
Thank you for the response. I still have a question, though. Even if $counter is incremented after using it, shouldn't it still add 1 each time, since it's looping? I don't see why it makes a difference whether it's used before or after. Because $counter = $counter++ IS ALWAYS ZERO! You might be interested in this more efficient way of writing your loop: <?php for( $start = 1, $counter = 0; $start < 11; $start++ ) { echo "{$counter++}. <br>"; } or: for( $start = 0, $counter = 0; $start < 10; echo "{$counter++} <br>", $start++); I found an error in my second example above. It should be: <?php for( $start = 0, $counter = 0; $start < 10; print "{$counter}<br>", $counter++, $start++ ); ?> The double brace {} can't have any computation. Darn! Guys - Can an entry be edited after the [Edit] button disappears? If so, how? This post has been edited by Ephraim F. Moya: Mar 25 2012, 11:20 PM |
Darin McGrew |
Mar 25 2012, 11:29 PM
Post
#8
|
WDG Member Group: Root Admin Posts: 8,365 Joined: 4-August 06 From: Mountain View, CA Member No.: 3 |
Let's walk through what happens. We start with ($counter == 0):
$counter = $counter++; First, $counter is incremented by the ++ operator, thus ($counter == 1). Next, the original value of $counter (that is, 0) is returned by the ++ operator. Then that value is assigned to $counter by the = operator. Let's look at it again with the working statement: $counter++; First, $counter is incremented by the ++ operator, thus ($counter == 1), just as before. Next, the original value of $counter (that is, 0) is returned by the ++ operator, just as before. However, that original value is then ignored, instead of being assigned to $counter the way it was before. |
Lo-Fi Version | Time is now: 23rd April 2024 - 04:36 PM |